NodeJs WebSocket断开连接

dfuffjeb  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(201)

我的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个客户端中的任何一个,是否有任何定时器关闭了我不知道的连接?
谢谢.

z2acfund

z2acfund1#

根据“症状”,我会说你使用nginx的反向代理。
尝试设置

proxy_read_timeout  600s; # deafult is 60 seconds

检查文档

qkf9rpyu

qkf9rpyu2#

老问题,但对于其他人谁将结束在这里与类似的问题:
大多数WebSocket实现(Java当然也有)都有一个内部空闲超时,可以在建立连接时进行调整。
上面的方法应该可以解决localhost上的问题,但是当通过互联网连接时,你还需要定期发送ping(通常每55秒就足够了),以确保中介代理和NAT路由器不会将你的连接视为空闲。不幸的是,目前大多数浏览器都缺乏这样的功能,所以这需要在服务器端完成。

相关问题