在我的正常设置中,无论是否有另一个客户端接收它,客户端都会向我的服务器发送数据。我怎样才能使它只在用户数> 1时发送数据包?我正在使用带有 socket.io 的节点。
问问题
371 次
1 回答
2
为此,您需要侦听connection
服务器(以及disconnect
)上的事件并维护连接在“全局”变量中的客户端列表。当连接超过 1 个客户端时,向所有连接的客户端发送一条消息,以了解它们可以开始发送消息,如下所示:
var app = require('express').createServer(),
io = require('socket.io').listen(app);
app.listen(80);
//setup express
var clients = [];
io.sockets.on('connection', function (socket) {
clients.push(socket);
if (clients.length > 1) {
io.socket.emit('start talking');
}
socket.on('disconnect', function () {
var index = clients.indexOf(socket);
clients = clients.slice(0, index).concat(clients.slice(index + 1));
if (clients.length <= 1) {
io.sockets.emit('quiet time');
};
});
});
注意:我在这里假设套接字被传递给断开事件,我很确定它是但没有机会测试。
该disconnect
事件不会接收传递给它的套接字,但是因为事件处理程序是在初始连接的闭包范围内注册的,所以您将可以访问它。
于 2012-04-23T04:10:46.287 回答