我的NodeJs服务器使用websocket并接受2个连接,一个来自Web客户端(Firefox v83.0),另一个来自Android应用程序。
一切工作正常,消息从Web客户端到移动的来回流动,反之亦然。
然而,在我看来,经过一段时间的非活动(如30或60秒)后,WebSocket连接断开。
我在服务器端记录了关闭事件,如下所示:
wsServer.on('close', (data) => {
console.log("CONNECTION CLOSED")
console.log(data.closeReasonCode)
console.log(data.closeDescription)
})
我得到的是:
1006
Peer not responding.
我在谷歌上搜索了1006错误,文档只告诉connection was closed abnormally
...很好的解释...谢谢:S
我需要一些帮助来弄清楚这里发生了什么,以及我得到的这个peer not responding
消息是什么。由于我不知道问题是否在服务器上,在2个客户端中的任何一个,是否有任何定时器关闭了我不知道的连接?
谢谢.
2条答案
按热度按时间z2acfund1#
根据“症状”,我会说你使用nginx的反向代理。
尝试设置
检查文档
qkf9rpyu2#
老问题,但对于其他人谁将结束在这里与类似的问题:
大多数WebSocket实现(Java当然也有)都有一个内部空闲超时,可以在建立连接时进行调整。
上面的方法应该可以解决localhost上的问题,但是当通过互联网连接时,你还需要定期发送ping(通常每55秒就足够了),以确保中介代理和NAT路由器不会将你的连接视为空闲。不幸的是,目前大多数浏览器都缺乏这样的功能,所以这需要在服务器端完成。