繁体   English   中英

使用socket.io-mongodb-emitter发射后关闭mubsub客户端

[英]Close mubsub client after emitting with socket.io-mongodb-emitter

我正在尝试使用socket.io-mongodb-emitter将一些消息发送到socket.io房间。 我的问题是,我的脚本永远不存在,因为它使与mongodb的连接保持活动状态。

请检查下面的示例,并给我一些建议,如何使脚本关闭mongodb连接并退出自身。

这个脚本会发出generator.js消息,客户端会收到消息,但是该过程不会退出。

var io = require('socket.io-mongodb-emitter')("mongodb://localhost:27017/test");
io.in('someRoom').emit('someMessage');

发射器-2.js该脚本退出,但是客户端永远不会收到消息。

var io = require('socket.io-mongodb-emitter')("mongodb://localhost:27017/test");
io.in('someRoom').emit('someMessage');
io.client.close();

发射器3.js,这完美地工作,客户端获取消息,然后退出过程。 但是setTimeout是一个非常糟糕的解决方案,必须有一些适当的方法让该进程自行退出。

var io = require('socket.io-mongodb-emitter')("mongodb://localhost:27017/test");
io.in('someRoom').emit('someMessage');
setTimeout(function () {
    io.client.close();
},100);

您需要使用.emit的功能来接收消息已发送的确认。

这样做:

io.in('someRoom').emit('someMessage',function(){
    console.log('message was sent');
    io.client.close();
);

在服务器上,您需要在收到函数时调用该函数。

  socket.on('someMessage', function (name, fn) {
    fn('received');
  });

这里的文件

也许使用回调来获取客户端已收到消息的确认,然后调用close函数

服务器:

var message = "hello";
io.in('someRoom').emit('someMessage', message, function(data){
    console.log(data);
    io.client.close();
});

客户:

socket.on('someMessage', function(message, callback){
    // do something with message here
    callback('message received');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM