netty channelgroup的广播信息,channel怎样获取

 我来答
zxh4567
推荐于2016-03-04 · TA获得超过6.1万个赞
知道大有可为答主
回答量:2.2万
采纳率:83%
帮助的人:1.3亿
展开全部
引用来自“预兆师”的答案
引用来自“石头哥哥”的答案
嗯 channel实际就是一个客户端和server的一个抽象的管道 ,netty封装了网络的底层 所以 你不必太多去掀开一些它封装的东西来处理 对于还不熟悉的开发者来讲的 话;你可以这样处理 在连接上来的时候 你创建一个session会话来持有这个channel ,每一个session有一个ID ,那么 你在业务层就可以通过这个ID拿到session 从而将这个数据发送出去,你这里 其实在服务器端就是sessionA sessionB ,A,B两个客户端连接服务器了 ,那么 就创建sessionA sessionB ,并产生一个ID (ID 保持唯一就可以了),A向B发送,那么实际就是通过服务器来转发A的消息到B,那么你必然拿到B的ID,几在A的消息中发送B的ID,这样就可以拿到sessionB ,然后channel.write(); 消息的转发 与消息的推送 关键就在与知道sessionID,顺利得到相应的session 这样就可以解决问题了;
创建session的位置在channelActive(ChannelHandlerContext ctx);标记channel的方式很多 ,上面的和你描述的一样 只是 封装了一个session来持有channel罢了;
谢谢你的回复。
你的回复里面没有提到如何绑定用户和channel的对应关系。我对此的大致想法是这样的:客户端与服务端建立连接的时候,也就是在channelActive(ChannelHandlerContext ctx),服务端用RSA算法生成一对公私钥,并把公钥返回给客户端;客户端使用公钥加密登录信息发送到服务器,服务器解密后,将用户信息与channel对应起来,记录在链表里面。然后当A发送信息给B的时候,服务器从链表里面找到B的信息,并通过B对应的channel传送信息给B。
不知我这样的连接流程有没有问题,请指教。
ID--session--channel 它们是一一对应的, map<ID,session>;
class session{
ID;//session持有ID
channel;//session持有channel
}
任何一个客户端链接上来,你就把服务器现在在线的ID同步给链接上来的客户端,这样就好像是qq,向谁发送? 只需 ID(目标)+message; 额 你这个是可以的 变相的其实本质一样 ,ID 就是一个纽带;
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式