针对不同的url,可以有不同的Handler来处理吗?
来源:12-1 课程总结

他门说这就是人生
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来发送消息,使效率变低。如果,不同房间的人本来就在不同连接中,那么直接发送到全部客户端就好,就没有遍历的过程。
写回答
2回答
-
用类型匹配,可以扩展现有的json,增加类型,根据类型判断一下,用handler不合适的
00 -
他门说这就是人生
提问者
2020-01-08
老师,不好意思,发了两个,页面提交不了,所以狂点提交
00
Netty+Spring Boot仿微信-全栈开发高性能后台及客户端
SpringBoot/Netty+MUI全栈开发 同时搞定后台+ Android&iOS
1498 学习 · 684 问题
相似问题