在我的正常设置中,无论是否有其他客户端接收数据,客户端都会向我的服务器发送数据。我怎样才能使它只在用户数为>时才发送数据包。 1?我正在使用带有socket.io的节点。
答案 0 :(得分:2)
要执行此操作,您需要监听服务器上的connection
事件(以及disconnect
)并维护一个以“全局”变量连接的客户端列表。当连接多个客户端时,向所有连接的客户端发送一条消息,知道他们可以开始发送消息,如下所示:
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事件,我很确定它是,但没有机会测试。 < /击>
disconnect
事件不会收到传递给它的套接字,但由于事件处理程序在初始连接的闭包范围内注册,因此您可以访问它。