我有一个像这样的简单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服务器关闭连接,错误代码为“1006”。谷歌告诉我这意味着连接异常中断。但是,我不确定是什么原因引起的。 ws.on('error')
回调也未被触发。如何与客户保持无限期/长期连接?
答案 0 :(得分:4)
Nginx将30秒设置为默认超时。
您需要使用proxy_read_timeout
指令增加此数字。
例如,将超时延长到一天(可能是矫枉过正)
proxy_read_timeout 86400s;
通常我会在location
部分设置它,以便可以仅为websocket覆盖它,而不会影响可能需要默认的区域。