Netty实现WebSocket,URI参数问题

1、问题:

Netty对WebSocket提供了很好的支持,在pipeline里添加一个WebSocketServerProtocolHandler就可以方便的暴露一个ws接口出去。但是,开发中却遇到一点小问题,需要在ws的URI带上参数queryString(如:/im/ws?w=221100234&t=99),然而这样会导致ws连接无法建立,浏览器报错:Connection closed before receiving a handshake response。

2、解决:

因为全安问题,ws是不推荐通过queryString携带信息的,所以Netty里WebSocketServerProtocolHandler默认的构造器是要求对连接建立时传入的URI与程序指定的路径完全匹配。

checkStartsWith即是控制根据startsWith来做URI匹配,所以改用重载的构造器即可解决问题(注意queryString上不要携带敏感信息)。

checkStartsWith使用的地方如下图中WebSocketServerProtocolHandshakeHandler类:

posted @ 2020-12-08 21:15  ocean.wen  阅读(2848)  评论(0编辑  收藏  举报