我正在使用Node + JS + socket.io应用程序。Node JS + Socket.io应用程序在一段时间后停止接收事件
整个应用程序工作正常,但大约5分钟后服务器停止接收客户端触发的事件。 :(
当事件不会被触发,我可以看到服务器成功接受心脏的跳动。
debug - got heartbeat packet
debug - cleared heartbeat timeout for client 4cKMC4Iqje-7dDfibJZm
debug - set heartbeat interval for client 4cKMC4Iqje-7dDfibJZm
debug - emitting heartbeat for client 4cKMC4Iqje-7dDfibJZm
debug - websocket writing 2::
debug - set heartbeat timeout for client 4cKMC4Iqje-7dDfibJZm
我也相信,该客户端发出的消息,因为我可以看到该数据在Chrome开发者工具发送。 以下是正在发送
5:::{"name":"ev_SendChatMessage","args":[{"chatMsg":"dgdfsgfs","aID":"10010001835364"}]}
而且,我已经检查TCP转储的结果在服务器端机器的样本数据,它成功接收数据包ETS。
节点版本是v0.10.21
socket.io版本0.9.16
客户端代码
var socket;
$(function()
{
// Connect to the Live Proctoring Server.
socket = io.connect('http://autoproc.am.in:8899');
});
function SendChatMsg()
{
// This get called on click of a button
socket.emit("ev_SendChatMessage", { chatMsg : "textToSend", aID : "123" });
}
服务器代码
var options = {};
var io = require('socket.io').listen(8899, options);
// Called when a connection is made with a new Client
function OnConnection (socket)
{
console.log("Connection has been made with " + socket.id);
socket.on('ev_SendChatMessage', SendChatMessageFromModerator);
socket.on('disconnect', OnDisconnect);
}
// This stops getting called after some time. In the beginning it is getting called successfully.
function SendChatMessageFromModerator(data)
{
console.log(data);
}
编辑:更准确地说这种事情发生只有在aro之后并收到7-8条消息并发出7-8条消息。
编辑:我试图将传输机制从Web Socket更改为“xhr-polling”。即使那样我也面临同样的问题,而我可以在调试中看到有价值的东西。
debug - xhr-polling received data packet 5:::{"name":"ev_SendChatMessage","args":[{"chatMsg":"sfsdfdsfs","aID":"10010001167896"}]}
debug - clearing poll timeout
debug - xhr-polling writing 8::
debug - set close timeout for client JfaWyiP3YqTRmqyzz4z6
debug - xhr-polling closed due to exceeded duration
debug - setting request GET /socket.io/1/xhr-polling/JfaWyiP3YqTRmqyzz4z6?t=1389965419417
debug - setting poll timeout
debug - discarding transport
debug - cleared close timeout for client JfaWyiP3YqTRmqyzz4z6
这清楚地表明数据已经到达Node JS应用程序。
你可以粘贴你到目前为止工作的代码吗? – thepanuto
没有一行代码就很难找出问题所在......给我们一个链接或一些东西来处理。 – rafaelcastrocouto
其实它的很多代码..请稍候,我将上传一些精简代码.. – Manu