Node.js“ws”websocket服务器在〜30秒后随机断开客户端,错误1006

我有一个简单的websocket服务器,如下所示:

const WebSocket = require('ws'); const wss = new WebSocket.Server( { server: server, path: "/ws" }); wss.on('connection', function connection(ws, req) { console.log("Connected"); ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.on('close', function close(code, reason) { console.log("Code: "+code+" | Reason: "+reason); console.log('disconnected'); }); ws.send('something'); }); 

我有一个连接到它的客户端,但连接大约30秒后,websocket服务器closures连接,错误代码为“1006”。 谷歌告诉我这意味着连接exception中断。 但是,我不确定是什么原因造成的。 ws.on('error')callback也不会被触发。 我如何与客户保持无限期的连接?

Nginx有30秒的默认超时时间。

你需要使用proxy_read_timeout指令来增加这个数字。

例如,要将超时延长到一天(这可能是矫枉过正)

 proxy_read_timeout 86400s; 

通常我将它设置在location部分,这样它就可以被覆盖,而不会影响可能需要默认的区域。