0

ユーザーがサーバーに何かを書き込もうとしたときに発生するエラーの理由を理解するのに苦労しています。

TypeError: Object #<identifyClient> has no method 'write'
at writeToAll (/root/node/mud/server.js:13:15)

writeToAll() で発生しているのに、identifyClient() が write() に関する苦情を出すのはなぜですか (15 行目の横にコメントがあります)。identifyClient() は実際にはクライアントの名前を設定するだけであり、writeToAll() で何が起こるかを気にする必要はありません。

var net = require("net");

var clients = [];

function identifyClient(client) {
    this.name = null;
    this.client = client;
}

function writeToAll(data, client) {
    for (var i = 0; i < clients.length; i++) {
        if (clients[i] != client) {
            clients[i].write(data); // This is line 15
        }
    }
}

var server = net.createServer(function(client) {
    var clientID = new identifyClient(client);
    clients.push(clientID);

    client.on("data", function(data) {
        writeToAll(data, client);
    });
});

server.listen(4444);
4

1 に答える 1

2

に置き換えclients[i]ますclients[i].client

clientsまた、クライアントが切断されたら、アレイからクライアントを削除する必要があります。

于 2012-05-09T21:34:56.770 に答える