Node.js聊天服务器,当另一个用户发送数据时客户端断开

我有一个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); 

你在这里有错字

如果(客户端列表[I] .writeable)

该属性的正确名称是可写的

我认为writable条件是数组中的每一项失败,因此所有的客户端都被删除,按照你的代码。 不知道你想用writable检查来做什么。