【问题标题】:Node.js chatServer, clients disconnected when another user sends dataNode.js chatServer,当另一个用户发送数据时客户端断开连接
【发布时间】:2013-07-24 20:50:30
【问题描述】:

我有以下代码用于 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);

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    这里有错别字

    if(clientList[i].writeable)

    该属性的正确名称是writable

    【讨论】:

      【解决方案2】:

      我认为writable 条件对于数组中的每个项目都失败了,因此根据您的代码,所有客户端都将被删除。不确定您要使用 writable 检查做什么。

      猜你喜欢
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2011-05-20
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多