SocketIO连接在4-5小时后停止发送数据

时间:2017-03-10 11:04:10

标签: node.js mongodb sockets reactjs

我使用ReactJS,ExpressJS,MongoDB和SocketIO开发了一个应用程序。

我有两台服务器: - 服务器A || 服务器B

套接字服务器托管在服务器A 上,应用程序托管在服务器B上

我在服务器B 上使用服务器A 套接字作为客户端。

服务器A 套接字的主要工作是从服务器A

的MongoDB数据库中获取后发出数据

一切都按预期工作,但在4-5-6小时后停止发出数据,但套接字连接将起作用。

我已经使用

进行了检查
socket.on('connection',function(){
 console.log("Connected")
)

我没有得到代码的错误。

我的代码:https://jsfiddle.net/ymqxo31d/

任何人都可以帮助我吗

1 个答案:

答案 0 :(得分:0)

我有一些编程错误。

我从setInterval()中的MongoDB获取数据,所以一段时间后耗尽资源,数据库连接每次都开始失败。

首先,我创建了一个单一MongoDB连接,并使用了我需要的每个地方。

2 ann我删除了setInterval并使用了setTimeout,如下所示。 注意:如果我继续使用setInterval,它会在定义的时间间隔内执行。它没有任何发出数据的状态[这也会导致繁重的资源使用]但我需要成功获取时将数据发送到套接字。)

setTimeout(emitData,1000);
function emitData(){
     db.collection.find({}).toArray(function(data){
         socket.emit('updateData',data);
         setTimeout(emitData,1000);
     })
}