针对不同的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,应该怎样添加呢

我的难点:

  1. 针对不同url,有不同的Handler,不知道怎样添加。

  2. 房间号是不定的,不知道WebSocketServerProtocolHandler是否有模糊匹配,或者能在handler中获取到请求的url。

之所以这样做,是因为我想用url表示房间号是最简单的,如果用json传递房间号,还会牵扯到众多channel里,赛选房间号为001的channel来发送消息,使效率变低。如果,不同房间的人本来就在不同连接中,那么直接发送到全部客户端就好,就没有遍历的过程。

写回答

2回答

风间影月

2020-01-08

用类型匹配,可以扩展现有的json,增加类型,根据类型判断一下,用handler不合适的

0
0

他门说这就是人生

提问者

2020-01-08

老师,不好意思,发了两个,页面提交不了,所以狂点提交

0
0

Netty+Spring Boot仿微信-全栈开发高性能后台及客户端

SpringBoot/Netty+MUI全栈开发 同时搞定后台+ Android&iOS

1498 学习 · 684 问题

查看课程