工作几个小时后,我的Socket.IO客户端开始向服务器发出无休止的请求...
所以。有在线人数统计服务器:
const http = require('http');
const io = require('socket.io');
const app = http.createServer();
const socket_io = io.listen(app);
app.listen(2053);
let clients = [];
socket_io.sockets.on('connection', (socket) => {
let ip = socket.handshake.headers['x-real-ip'];
if (ip && !clients.hasOwnProperty(ip)) {
clients[ip] = 1;
}
socket.on('disconnect', () => {
if (ip && clients.hasOwnProperty(ip)) {
delete clients[ip];
}
});
});
let tick = () => {
let _online = Object.keys(clients).length;
socket_io.sockets.emit('changeOnlineEvent', { 'online': _online });
setTimeout(tick, 2000);
};
setTimeout(tick, 2000);
,每2秒向客户端发送一次统计信息。看起来很简单。
这是客户:
let socket = io.connect('http://domain:port',
{
'reconnection': true,
'reconnectionAttempts': 2
});
socket.on('changeOnlineEvent', (object) => {
console.log(object.online);
});
但是在每个客户端工作了几个小时(6-12小时)后,便开始向io.server发出无休止的请求: 如您所见,每个响应为200 OK,并具有正确的响应正文。
这时,我开始在zabbix中看到一个可怕的图像:
在浏览器中重新加载页面无济于事。在运行io服务器应用程序时,服务器控制台中没有任何错误。一切都很好。
在这种情况下唯一有用的方法-重新启动nodejs应用程序:-(
我不知道怎么了以及如何调试它。需要帮忙。谢谢。
答案 0 :(得分:1)
DEBUG=engine:socket node index.js
(socket.io使用debug
软件包https://www.npmjs.com/package/debug)