Netty、Channel和WebSocket

Netty、Channel和WebSocket,websocket,netty,channel,Websocket,Netty,Channel,因此,我构建了一个基于Netty 3.6.2的Websockets服务器应用程序。这个应用程序将有很多很多用户 其思想是,客户机注册以侦听有关主题的信息,当信息流经服务器时,服务器将信息发送给客户机。到目前为止听起来很简单,对吗 我通过构建一个存储在内存中的巨大地图来实现这一点,将主题映射到客户端的频道。当服务器希望向所有感兴趣的客户端发送关于某个主题的消息时,它会在映射到该主题的所有通道上循环。看起来很简单,对吧 然而,在一些初步的多用户测试中,我发现自己意识到在通道和客户端之间没有一对一的映

因此,我构建了一个基于Netty 3.6.2的Websockets服务器应用程序。这个应用程序将有很多很多用户

其思想是,客户机注册以侦听有关主题的信息,当信息流经服务器时,服务器将信息发送给客户机。到目前为止听起来很简单,对吗

我通过构建一个存储在内存中的巨大地图来实现这一点,将主题映射到客户端的频道。当服务器希望向所有感兴趣的客户端发送关于某个主题的消息时,它会在映射到该主题的所有通道上循环。看起来很简单,对吧


然而,在一些初步的多用户测试中,我发现自己意识到在通道和客户端之间没有一对一的映射。如果不是通过通道,我如何专门针对向特定客户端发送消息?我不知所措……

客户与开放渠道的比例应该是一比一。事实上,不存在与netty无关的问题


谢谢你的帮助

为什么通道和客户端之间没有一对一的映射?是因为一个客户可能有多个开放渠道吗?我认为应该有一个1-1映射。但事实并非如此。当我查看开放频道的数量时,我有7个开放频道,但连接了1000个用户。这对我来说毫无意义。然而,我可以看到,总共打开了1000个频道。。只是目前只有7个通道是开放的。等等,如果只有7个通道,那么实际上只有7个物理连接,那么如何计算1000个用户?很明显,goofy正在进行一些事情。我可以在linux机器上看到多达89个netstat-ta打开的套接字,以及101个打开的通道。我的客户认为它有200多个用户同时连接。我的结论是这不是一个棘手的问题,这是另一个问题。我忘记了netstat-ta的意思,但我通常会得到java进程的pid,然后执行netstat-ap——numeric ports | grep