netty-socketio:客户端未完成升级 - 关闭传输
netty-socketio: client did not complete upgrade - closing transport
我有一个套接字服务器 运行 netty-socketio 和一个使用 socket.io-client JS 库连接到它的网络应用程序。
问题是我失去了一些连接(不是全部,假设是 20%)。
对于丢失的连接:客户端建立连接后,服务器立即记录client did not complete upgrade - closing transport
并断开客户端。
这发生在我的生产服务器(使用 nginx 作为代理)和我的本地环境(直接连接到 netty-socketio 服务器)上。它几乎是随机的,我无法识别它的模式。例如,如果我不断地在浏览器上刷新客户端应用程序(间隔 5 秒),在某个时候会发生此错误,并且对于后续尝试它会再次正常工作(直到再次发生)。
这是 netty-socketio 库上的错误: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%。
我有一个套接字服务器 运行 netty-socketio 和一个使用 socket.io-client JS 库连接到它的网络应用程序。
问题是我失去了一些连接(不是全部,假设是 20%)。
对于丢失的连接:客户端建立连接后,服务器立即记录client did not complete upgrade - closing transport
并断开客户端。
这发生在我的生产服务器(使用 nginx 作为代理)和我的本地环境(直接连接到 netty-socketio 服务器)上。它几乎是随机的,我无法识别它的模式。例如,如果我不断地在浏览器上刷新客户端应用程序(间隔 5 秒),在某个时候会发生此错误,并且对于后续尝试它会再次正常工作(直到再次发生)。
这是 netty-socketio 库上的错误: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%。