能针对url不同的ws连接,设置不同的Handler吗?
来源:10-5 前端keepalive保持,与心跳测试

他门说这就是人生
2020-01-08
我们添加了对websocket中URL为/ws的连接添加了ChantHandler,代码如下:
/** * websocket 服务器处理的协议,用于指定给客户端连接访问的路由 : /ws * 本handler会帮你处理一些繁重的复杂的事 * 会帮你处理握手动作: handshaking(close, ping, pong) ping + pong = 心跳 * 对于websocket来讲,都是以frames进行传输的,不同的数据类型对应的frames也不同 */ pipeline.addLast(new WebSocketServerProtocolHandler("/ws", true)); // 自定义的handler pipeline.addLast(new ChatHandler());
比如说,我想在聊天中有个群聊的概念,大家进入同一个房间,则可以在房间内广播消息。
我想设置房间的Websocket连接地址为/ws/[房间号](比如/ws/001),则001房间内的所有人可一起群聊。则想再添加一个对这个连接的Handler,应该怎样添加呢?
我的难点:
针对不同url,有不同的Handler,不知道怎样添加。
房间号是不定的,不知道WebSocketServerProtocolHandler是否有模糊匹配,或者能在handler中获取到请求的url。
之所以这样做,是因为我想用url表示房间号是最简单的,如果用json传递房间号,还会牵扯到众多channel里,赛选房间号为001的channel来发送消息,使效率变低。如果,不同房间的人本来就在不同连接中,那么直接发送到全部客户端就好,就没有遍历的过程。
写回答
1回答
-
重复问题,已回复
012020-01-08
Netty+Spring Boot仿微信-全栈开发高性能后台及客户端
SpringBoot/Netty+MUI全栈开发 同时搞定后台+ Android&iOS
1499 学习 · 684 问题
相似问题