当前位置: 首页> 游戏> 评测 > 沈阳线上教学_北京近期疫情最新情况_seosem是指什么意思_长春网站优化

沈阳线上教学_北京近期疫情最新情况_seosem是指什么意思_长春网站优化

时间:2025/7/12 6:33:35来源:https://blog.csdn.net/qq_26564185/article/details/146639872 浏览次数:1次
沈阳线上教学_北京近期疫情最新情况_seosem是指什么意思_长春网站优化

Netty提供了很好的WebSocket支持,可以通过添加WebSocketServerProtocolHandler实现暴露一个WebSocket接口。

Netty WebSocketServerProtocolHandler  第二个参数 存在一个叫  subprotocol的参数可供选择 

如上代码可以看到第二个参数 为WebSocket
2025-03-29T01:47:26.png

 new WebSocket(this.ws + '?devName=' + client)

此时 netty 即可在WebSocket的URI中添加参数queryString,例如/ws?devName=xxx&t=99,

正常连接 2025-03-29T01:54:28.png

--------------------------------------------------------------------------------

但是如果前端如下新增第二个参数创建websocket 可能无法建立连接

   new WebSocket(this.ws + '?devName=' + client, jwtToken)

浏览器会报错

Connection closed before receiving a handshake response

2025-03-29T01:50:27.png

其实有连接上 只不过握手失败 netty其实能正常收到连接请求

我们再来看前面netty的构造参数

2025-03-29T01:45:21.png

new WebSocket(this.ws , jwtToken) 连接不成功的 解决方案

  • 注意下面的备注关键点
@Overrideprotected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) {// 获取 Sec-WebSocket-Protocol 头中的 tokenHttpHeaders headers = request.headers();String protocol = headers.get("Sec-WebSocket-Protocol");if (protocol == protocol || protocol.equals("null") || protocol.isEmpty()) {log.error("Sec-WebSocket-Protocol header not found in request");ctx.close();return;}// 升级为 WebSocket 连接,并指定protocol协议ctx.pipeline().addLast(new WebSocketServerProtocolHandler("/ws",protocol, // 关键点true,65536 * 10,true,true));
  • 参考文章
关键字:沈阳线上教学_北京近期疫情最新情况_seosem是指什么意思_长春网站优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: