node.jsチャットサーバー用の次のコードがあります。サーバーが実行され、クライアントは telnet して接続できます。しかし、クライアントがメッセージを送信すると、他のすべてのクライアントが自動的に切断され、何が間違っているのかわかりません。
var net = require('net');
var chatServer = net.createServer();
var clientList = [];
chatServer.on('connection', function(client) {
client.name = client.remoteAddress + ':' + client.remotePort;
client.write("Hi " + client.name + "!\n");
clientList.push(client);
client.on('data', function(data) {
broadcast(data, client);
});
client.on('end', function() {
clientList.splice(clientList.indexOf(client), 1);
});
client.on('error', function(e) {
console.log(e);
});
});
function broadcast(message, client) {
var cleanup = [];
for(var i = 0; i < clientList.length; i++) {
if(client !== clientList[i]) {
if(clientList[i].writeable) {
clientList[i].write(client.name + " says " + message);
} else {
cleanup.push(clientList[i]);
clientList[i].destroy();
}
}
}
for(i = 0; i < cleanup.length; i++) {
clientList.splice(clientList.indexOf(cleanup[i]), 1);
}
}
chatServer.listen(9000);