怎么把netty的链接通道存储到redis中这样后续可以通过key取出channel给客户端发消息

回答

放内存里面了,之前是要做集群想存redis所有机器都能取出来用后来发现不是这么回事

我们项目中大致是这么做的:

无论是自己写数据结构还是使用Jedis,大概都是有一个类似Map的结构。

建立一个Bean用于表示会话,此处暂且称之为Session。

在Session里引用netty的Channel。

在channelActive时将其放入redis。

有必要的话,可以将channel.id().asLongText()或channel.id().asShortText()作为Session的唯一标识

@Override

public void channelActive(ChannelHandlerContext ctx) throws Exception {

//可以将channel.id().asLongText()或channel.id().asShortText()作为Session的ID

Session session = Session.buildSession(ctx.channel());

//Session存入Redis

pushSession2Redis(session);

logger.info("终端连接:{}", session);

}

Session.java

import java.net.SocketAddress;

import io.netty.channel.Channel;

public class Session {

//Session的唯一标识

private String id;

//和Session相关的channel,通过它向客户端回送数据

private Channel channel = null;

//上次通信时间

private long lastCommunicateTimeStamp = 0l;

//快速构建一个新的Session

public static Session buildSession(Channel channel) {

Session session = new Session();

session.setChannel(channel);

//此处暂且使用netty生成的类似UUID的字符串,来标识一个session

session.setId(channel.id().asLongText());

session.setLastCommunicateTimeStamp(System.currentTimeMillis());

return session;

}

// getter,setter

}

public class SessionManager{

//将Session放入redis

public void pushSession2Redis(Session session){

//这里就不用我说了吧

//不知道你自己用的redis客户端是什么

//调用客户端(比如Jedis)的API把session放到你自己的数据结构不就行了

}

//从redis获取指定session

public Session findById(String sessionId){

return null;

}

}

你确定你这个能序列化保存到redis里面?

或许这里要注意一下?

我也遇到这个问题了?请问一下你解决了吗?

我按照@诸葛流云的方式试了,但是向redis中保存的时候,还是报不能序列化的异常,暂时没找到合适的方案

2018年3月22日09:18:19

您好 请问现在有解决方案了么

redis 通道 java_【java】netty4,服务端向客户端主动发消息怎么把channel存储到redis缓存中?...相关推荐

  1. 服务端向客户端主动发送消息

    通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客户端请 ...

  2. Netty4服务端和客户端实现

    目录 目标 代码UML类图 服务端 客户端 Netty4实现服务端 Netty4实现客户端 测试 小结 目标 用netty4实现一个服务端和客户端,两者之间可以进行测试通信 代码UML类图 服务端 客 ...

  3. netty服务器返回信息关闭,netty4 服务端同步客户端返回的结果

    netty是一个异步通讯框架,在有的时候咱们想使用服务端向客户端发送消息,服务端同步等待客户端返回结果真进行下一步的业务逻辑操做.那要怎么作才能同步获取客户端返回的数据呢?这里我用到了JDK中的闭锁等 ...

  4. java mina 服务端_Mina客户端和服务端代码编写

    1.客户端 package com.boonya.protocol; import java.net.InetSocketAddress; import java.nio.charset.Charse ...

  5. java sslsocket程序_JAVA与C++进行sslsocket通信,JAVA做服务端或客户端

    前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖到现在才写这篇文章,不好意思哈. 本文测试环境: 系统:WINDOWS 7(第3.6步).OS X 10.9(第4步) 软 ...

  6. Java实现服务端和客户端的通信(文件下载)

    网络编程 网络通信的介绍 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据 两台电脑连在一起就组成了一个计算机网络.我们通过光纤连接到电信的网关,中国电信通过海底光缆和美国电信网关连接,你 ...

  7. Java创建服务端和客户端基础(一)多人在线聊天程序实战基础

    基于Java一步步实现多人在线聊天!(持续更新中) 文章目录 ⚡前言

  8. java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍

    websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现. 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: ​ 当发送私信的时候,如 ...

  9. 服务器响应回调函数,解决有关flask-socketio中服务端和客户端回调函数callback参数的问题(全网最全)...

    由于工作当中需要用的flask_socketio,所以自己学习了一下如何使用,查阅了有关文档,当看到回调函数callback的时候,发现文档里都描述的不太清楚,最后终于琢磨出来了,分享给有需要的朋友 ...

  10. ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)

    ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点-python版本 rosed msg和srv 创建msg 使用rosmsg 创建srv 使用rossrv 重新make一下软 ...

最新文章

  1. C/C++-标准输入/输出重定向为文件输入/输出
  2. python估计物体角度
  3. wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法...
  4. 面绘制经典算法:MarchingCube实现(控制台篇)
  5. Linux shell ==运算符
  6. php 8 jit,深入理解PHP8 JIT
  7. 1.4编程基础之逻辑表达式与条件分支 11 晶晶赴约会
  8. 微信小应用资源汇总整理
  9. Oracle DataGuard数据备份方案详解
  10. 中英文对照 —— 图表等的可视化
  11. 视频识别车牌号(Python)
  12. 阳线双响炮K线形态,上升势不可挡,送指标源码
  13. 2022年茶艺师(初级)上岗证题库及在线模拟考试
  14. java对静态图片/Gif图片/视频进行水印
  15. 名帖17 吴让之 篆书《吴让之篆书墨迹》
  16. android 访问data目录、6.0模拟器读写sdcard、相关sdcard路径
  17. Injected and Delivered: Fabricating Implicit Control over Actuation Systems by Spoofing Inertial Sen
  18. 计算机启动盘安装教程,笔记本系统重装教程,笔记本电脑u盘启动盘装系统教程...
  19. mongoose http 源码解析(1)
  20. 蓝鲸CTF-web-密码泄露

热门文章

  1. 简单自定义MVC优化
  2. 2023-2028年中国压铸机行业发展前景与投资趋势分析报告
  3. 互联网的一些事 - 科学与灵修:创业者精神修炼问题
  4. Seventh season fifteenth episode,Joey got a new brain??????
  5. php,表单+文本域,增加表单的文本域的html
  6. kindle paperwhite2 越狱备忘
  7. Vue3 异步组件 suspense
  8. linux 卸载dnw命令,《转载》linux下利用dnw烧写文件,dnw安装与配置
  9. RGB转CMY最简单的方法
  10. retained heap shallow heap 区别及介绍