簡體   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