我有一个node.js聊天服务器的代码。服务器运行,客户端可以远程登录和连接。但是当客户端发送消息时,它会自动断开其他所有客户端的连接,而我却不明白我做错了什么。
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);
答案 0 :(得分:1)
你这里有拼写错误
如果(客户端列表[I] .writeable)
该属性的正确名称是可写
答案 1 :(得分:0)
我认为writable
条件对于数组中的每个项都失败了,因此根据您的代码删除了所有客户端。不确定您要对writable
检查尝试做什么。