【发布时间】:2018-07-31 08:29:14
【问题描述】:
我正在为客户端服务器功能开发 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);
});
请帮我解决这个问题。 提前谢谢...
【问题讨论】:
-
首先在文件中声明了
io?如果是这样,您不应该使用io.sockets.emit,而是使用io.emit- 我相信您确实应该使用套接字实例,然后调用socket.broadcast.emit,它将发送到除发送者之外的所有连接的客户端 -
感谢您的回复。我已经用声明部分编辑了我的问题。我能够在相同的代码中发出和接收事件,但它不能在关闭功能中工作,如代码所示。 process.on() 有什么限制吗?