netty服务端(TCP)如何主动给客户端发消息?

DavidWu 发布于 2015/01/09 10:27
阅读 15K+
收藏 0

我在使用netty5. 我看到TCP链接是全双工的,想问下,服务端如何遍历已连接上的客户端,并且对满足要求的客户端主动发消息?

现在看到的例子基本上都是请求--应答模式。

加载中
1
ksfzhaohui
ksfzhaohui

引用来自“ksfzhaohui”的评论

长连接,服务器保存玩家和channel的关系,例如Map<String,Channel>用sessionId关联玩家的channel,服务器想给某个玩家推送就直接获取到他的channel,然后write就行了

引用来自“DavidWu”的评论

能否给个代码,在哪个Handler去write? 谢谢

private ConcurrentHashMap<String, Channel> sessionChannelMap = new ConcurrentHashMap<String, Channel>();

用来保存session和channel的关系,当需要给某个客户端推送消息时

Channel channel=sessionChannelMap .get(session);

channel.write(message);

0
一笑居
一笑居
长链接   或者客户端主动连接上了   在handler 的 onactive方法里面往那边发
0
ksfzhaohui
ksfzhaohui
长连接,服务器保存玩家和channel的关系,例如Map<String,Channel>用sessionId关联玩家的channel,服务器想给某个玩家推送就直接获取到他的channel,然后write就行了
0
DavidWu
DavidWu

引用来自“ksfzhaohui”的评论

长连接,服务器保存玩家和channel的关系,例如Map<String,Channel>用sessionId关联玩家的channel,服务器想给某个玩家推送就直接获取到他的channel,然后write就行了
能否给个代码,在哪个Handler去write? 谢谢
0
火亮
火亮
服务端发消息给客户端需要获取对应的channel,这个channel在登陆后要存起来,发消息时取出对应的channel,调用它的writeandflush方法就能发送出去
0
狐蝠

我也在找这个.....楼主现在有demo了嘛....... 主动发送的例子好难找......

0
狐蝠

主要是我用main方法获取map里的channel一直报空指针异常, 有谁没解决办法嘛

0
手牽着手

netty5已经被官方废弃了,用集合保存服务端和客户端的映射关系,然后在handler里的handlerAdd方法里遍历这个集合,给客户端推送消息

返回顶部
顶部