最近做了一个项目, 需要不同的客户端通过WebSocket实现即时点赞功能, websocket维持长连接, Netty框架负责处理巨大客户数量的接入, 据说16个核就可以支持百万并发.
研究了一下Netty, 的确挺傻瓜的, 买了两本书:
https://item.jd.com/12070975.html
Netty In Action, 据说是阿里的人翻译的, 挺不错.
https://item.jd.com/11681556.html
这本是中国人自己写的.
思路是, 在负责处理WebScocketFrame的TextWebSocketFrameHandler类里面, 插入一些代码, 将channel先组织成一个List, 因为我希望同一个组织内的终端可以形成组播, 简单来说可以理解成一个独立聊天室, 在这个聊天室里面的人说话, 大家都听得见, 不在这个聊天室的人, 就听不见了. 所以首先这个是一个ArrayList, 然后加上聊天室的ID, 组成一个Map元素, 多个聊天室组成一个Map.
有了这些先组成list,然后组成map的channel, 你想发什么给谁, 就容易很多了.
另外, 测试用的Index.html用的js语言, 直接new了一个WebSocket类, 然后send对应的消息.
好吧, 我承认夜深了, 我累了, 回头再写具体的实现过程吧. 先看代码, ok?
具体的代码实现在:
https://github.com/MontaukLaw/NettyLikeServer