Следуя моему предложению использовать Set
для отслеживания всех подключенных сокетов, это один из способов реализовать это. Эта реализация поддерживает, что Set
по мере того, как соединения приходят и уходят, прослушивая как событие connect
, так и событие end
.
Эта реализация также поддерживает желаемую функцию для отправки на все подключенные сокеты, КРОМЕ того, который вызвал событие (которое, я думаю, того, чего хотела бы ваша ситуация):
// Set of all currently connected sockets
const connectedSockets = new Set();
// broadcast to all connected sockets except one
connectedSockets.broadcast = function(data, except) {
for (let sock of this) {
if (sock !== except) {
sock.write(data);
}
}
}
const server = net.createServer(function(sock){
console.log('new client connected');
connectedSockets.add(sock);
sock.on('end', function() {
connectedSockets.delete(sock);
});
sock.on('data', function(data) {
console.log('Server received');
connectedSockets.broadcast(data, sock);
});
});