在nodejs和socket.io服务器关闭期间向客户端发送事件

时间:2018-07-31 08:29:15

标签: node.js socket.io

我正在开发用于客户端服务器功能的nodejs,并使用socket.io来发送和接收事件。我可以在我的代码中发出和接收事件,但是在进程关闭期间遇到发出和接收事件的问题。我想在服务器(nodejs)关闭期间向所有客户端发出事件。我正在这样使用它

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);                                                                                                              

process.on('SIGINT', shutdown);

function shutdown() {
  console.log('Inside shutdown server');
  //io.emit('shutdown', 'Server is going DOWN');
  io.sockets.emit('shutdown', 'Server is going DOWN');
  server.close(function () {
    console.log('closed express');   
  });    
  process.exit(0);
} 

但是另一端没有收到关闭事件。我在这里想念什么吗?

接收方代码:(nodejs)

socket.on('shutdown', function(msg) {
    console.log('inside shutdown ' + msg);
});

请帮助我解决此问题。 预先感谢...

1 个答案:

答案 0 :(得分:0)

显然,处理next tick中的消息发送,因此您必须将调用process.exit(0)推迟到下一个事件循环迭代:

function shutdown() {
  // ...
  process.nextTick(() => {
    process.exit(0);
  })
}