开发者社区> 问答> 正文

netty服务器端如何实时写回客户端的疑问 :报错

初学netty,看了所有sample没有找到服务器如何实时写回客户端,只有当客户端发送请求时才能获得ChannelHandlerContext,从中取得channel,然后将要写的数据写到客户端。网上找到的实时写回的例子都是将channel保存起来,然后在写到客户端时使用,我的疑问是channel是框架本身维护的,保存一个副本是否可靠,比如框架将某些channel释放了,那保存的副本就是无效的,或者因为保存副本导致框架无法释放channel。

展开
收起
kun坤 2020-06-14 11:59:03 781 0
1 条回答
写回答
取消 提交回答
  • 长连啊,客户端要定时检测,发心跳######

    引用来自“平安北京”的评论

    长连啊,客户端要定时检测,发心跳
    心跳的间隔不可能设太短,无法实时写到客户端,需要等到下一个心跳到来才能写回,对需要立刻回应的需求不太可行######你思路错了吧,你自己写个session管理器,就是map,存放客户端的连接,需要时直接取出来写就行了,异步的,跟客户端发不发消息没有关系,只要session有效######

    引用来自“平安北京”的评论

    你思路错了吧,你自己写个session管理器,就是map,存放客户端的连接,需要时直接取出来写就行了,异步的,跟客户端发不发消息没有关系,只要session有效
    以前做嵌入式的,初学服务器方面的编程,我的问题是这样把连接channel保存起来是否可靠,因为例子里没有这样的用法,channel由框架管理,而我对框架的实现不了解,不知道这样直接把channel保存起来是否安全######

    引用来自“平安北京”的评论

    你思路错了吧,你自己写个session管理器,就是map,存放客户端的连接,需要时直接取出来写就行了,异步的,跟客户端发不发消息没有关系,只要session有效

    引用来自“cys1357”的评论

    以前做嵌入式的,初学服务器方面的编程,我的问题是这样把连接channel保存起来是否可靠,因为例子里没有这样的用法,channel由框架管理,而我对框架的实现不了解,不知道这样直接把channel保存起来是否安全
    发消息的时候检查一下,还是比较靠谱的######netty用ChannelGroup管理 channel######回复 @cys1357 : 3.x我没用过,4.0用过channelgroup,是可行,不过它是set集合######我也看到这个,想在连接建立时加一个有名字的channelgroup,但一部分已有代码用了3.x版本,请问您用过吗,是否可行######我自己实现了一个channel管理器(其本质就是一个HashMap),维护这个管理器依赖于Handler,连接注册和断开都会去操作这个管理器。需要在其他地方拿到这个channel,就从这里拿。我用的是4.x的版本,有需要的话可以把代码发给你######非常感谢,邮箱以留言给您######

    维护一个hashMap

    用需要检索的标示做key

    发送的时候直接查出来send就行

    ######

    引用来自“朱宏青”的评论

    维护一个hashMap

    用需要检索的标示做key

    发送的时候直接查出来send就行

    我想问的不是如何查找到channel,而是保存channel是否安全######你的channel是否安全是指什么?######

    引用来自“朱宏青”的评论

    维护一个hashMap

    用需要检索的标示做key

    发送的时候直接查出来send就行

    引用来自“cys1357”的评论

    我想问的不是如何查找到channel,而是保存channel是否安全
    因为看到网上很多提问是当很多连接时,出现卡住的现象。
    2020-06-14 11:59:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载