1

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);
4

2 に答える 2

1

ここにタイプミスがあります

if(clientList[i].writeable)

そのプロパティの正しい名前は書き込み可能です

于 2013-07-24T12:50:30.150 に答える
0

writable配列内のすべてのアイテムで条件が失敗しているため、コードに従ってすべてのクライアントが削除されていると思います。小切手で何をしようとしているのかわからないwritable

于 2013-07-24T12:47:05.430 に答える