写入套接字

时间:2012-05-09 21:27:14

标签: sockets node.js chat

我无法理解当用户尝试向服务器写入任何内容时出现错误的原因:

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

为什么identifyClient()抱怨write(),而它发生在writeToAll()中(第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);

1 个答案:

答案 0 :(得分:2)

clients[i]替换为clients[i].client

一旦断开连接,您也必须从clients阵列中删除客户端。

相关问题