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

Javascript 使用socket.io-mongodb-emitter发射后关闭mubsub客户端,javascript,node.js,mongodb,sockets,socket.io,Javascript,Node.js,Mongodb,Sockets,Socket.io,我正试图使用socket.io mongodb发射器将一些消息发射到socket.io房间中。我的问题是,我的脚本永远不存在,因为它保持了到mongodb的连接 请检查我下面的示例,并给我一些建议,如何使脚本关闭mongodb连接并让其自身退出 emitter.js此脚本发出消息,客户端收到消息,但进程不退出 var io = require('socket.io-mongodb-emitter')("mongodb://localhost:27017/test"); io.in('someRo

我正试图使用
socket.io mongodb发射器将一些消息发射到
socket.io
房间中。我的问题是,我的脚本永远不存在,因为它保持了到
mongodb
的连接

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

emitter.js此脚本发出消息,客户端收到消息,但进程不退出

var io = require('socket.io-mongodb-emitter')("mongodb://localhost:27017/test");
io.in('someRoom').emit('someMessage');
emitter-2.js此脚本退出,但客户端从未收到消息

var io = require('socket.io-mongodb-emitter')("mongodb://localhost:27017/test");
io.in('someRoom').emit('someMessage');
io.client.close();
emitter-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');
  });

文档

您需要使用.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');
});

可能使用回调来获得客户机收到消息的确认,然后调用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');
});