2014-01-17 43 views
2

我正在使用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应用程序。

+0

你可以粘贴你到目前为止工作的代码吗? – thepanuto

+2

没有一行代码就很难找出问题所在......给我们一个链接或一些东西来处理。 – rafaelcastrocouto

+1

其实它的很多代码..请稍候,我将上传一些精简代码.. – Manu

回答

0

我找到了解决我的问题..

问题是,我是创建数据库连接池,但我不释放使用dbConn.release();

一旦在池中的连接的连接被用尽的应用程序一直在等待数据库连接从池中获取。

总之,恶魔是在细节。我在我的问题中没有提到的细节。哈哈哈.. !!

相关问题