簡體   English   中英

Node.js遠程登錄聊天服務器

[英]Node.js telnet chat server

我正在嘗試使用node.js制作telnet聊天服務器

當我打開多個終端並輸入文本時,沒有任何顯示。 即文本不會傳輸到另一個終端

我打開服務器終端並輸入

telnet 127.0.0.1 8888

然后開始輸入,但什么也沒出現

var events = require('events');
var net = require('net');

var channel = new events.EventEmitter();
channel.clients = {};
channel.subscriptions = {};

channel.on('join', function(id, client) {
    console.log("join");
    this.clients[id] = client;
    this.subscriptions[id] = function(senderId, message) {
        if (id != senderId) {
            this.clients[id].write(message);
        }
    }
    this.on('broadcast', this.subscriptions[id]);
});

var server = net.createServer(function(client) {
    console.log("createServer");
    var id = client.remoteAddress + ':' + client.remotePort;
    client.on('connect', function() {
        console.log("connect");
        channel.emit('join', id, client);
    });
    client.on('data', function(data) {
        console.log("data");
        data = data.toString();
        channel.emit('broadcast', id, data);
    });
});

server.listen(8888);

我簡化了您的代碼,以顯示如何向用戶發送消息:

var events = require('events');
var net = require('net');

clients = [];

function randomInt (low, high) {
    return Math.floor(Math.random() * (high - low) + low);
}
function generateId(length) {
    var output = "";
    for(var i = 0;i<length;i++) {
        output += randomInt(0,9);
    }
    return output;
}

function sendToAll(data,sender) {
    console.log(clients.length);
    var size = clients.length;
    for(i=0;i<size;i++) {
        if(sender.unique_id != clients[i].unique_id) {
            clients[i].write(data);
        }
    }
}

var server = net.createServer(function(client) {
    console.log("New client: " + client.remoteAddress);
    client.write("Welcome!\r\n");
    client.unique_id = generateId(10);
    clients.push(client);

    client.on('data', function(data) {
        data = data.toString();
        console.log(data);
        sendToAll(data,client);
    });
});

server.listen(8888);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM