开发者社区> 问答> 正文

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

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

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

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

展开
收起
爱吃鱼的程序员 2020-06-04 15:56:06 1828 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    引用来自“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);

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

    引用来自“ksfzhaohui”的评论

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

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

    ######

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

    ######

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

    2020-06-04 17:54:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载