Netty-socketio:客户端未完成升级 - 关闭传输
netty-socketio: client did not complete upgrade - closing transport
我有一个运行netty-socketio的套接字服务器和一个使用 socket.io 客户端JS库连接到它的Web应用程序。
问题是我失去了一些连接(不是全部,假设 20%(。
对于丢失的连接:客户端建立连接后,服务器立即记录client did not complete upgrade - closing transport
并断开客户端的连接。
这发生在我的生产服务器(使用 nginx 作为代理(和我的本地环境(直接连接到 netty-socketio 服务器(上。它几乎是随机的,我无法识别它的模式。例如,如果我不断刷新浏览器上的客户端应用程序(间隔 5 秒(,则在某个时候会发生此错误,并且在随后的尝试中,它将再次正常工作(直到再次发生(。
这是 netty-socketio lib 上的错误:https://github.com/mrniko/netty-socketio/blob/master/src/main/java/com/corundumstudio/socketio/transport/WebSocketTransport.java#L196但我无法弄清楚为什么它会随机发生(有时在第一次尝试时(
对此的任何想法都非常感谢。
谢谢
经过一些研究和测试,我发现当使用 netty-socketio 作为服务器时,您需要在客户端指定传输方法。
var socket = io('server-address', { transports: [ 'polling' ] });
// or
var socket = io('server-address', { transports: [ 'websocket' ] });
如果不指定,将使用轮询作为传输方法建立连接,netty 将自动尝试将其升级到 websocket。这就是导致连接失败的原因。
指定传输方法后,到目前为止,我的连接失败率为0%。
相关文章:
- CORS——它是客户端的东西,服务器端的东西,还是传输级别的东西
- socket.io:断开连接事件 - “传输关闭”、“客户端命名空间断开连接”、“传输错误”和“强制关闭”
- 如何在node.js中将数组从服务器端传输到客户端
- 从客户端应用程序使用门守进行身份验证,而无需传输机密
- Netty-socketio:客户端未完成升级 - 关闭传输
- 在 Flask 中将客户端数据传输到服务器端
- 如何在 2 个客户端之间直接连接流式传输视频
- 在客户端使用 CometD 获取传输和 EOF 异常
- 仅从客户端检测下载开始/文件传输的开始
- 通过服务器将视频从一个客户端流式传输到另一个客户端
- 将JavaScript和CSS作为二进制文件从服务器传输到客户端的可行性
- Web身份验证-如何安全地将用户名/密码从客户端传输到服务器
- 将部分视频流式传输到客户端
- 如何将数据从客户端表单输入传输到服务器端Nodejs脚本
- javascript客户端的节俭传输
- 将数据从JavaScript客户端传输到c#服务器
- 文件从服务器传输到客户端Node.js
- 将javascript变量从客户端传输到服务器
- 如何将C#视频(图像)流式传输到HTML5客户端
- 在客户端和服务器之间传输日期时间的最佳方式(c#/javascript)