Node.js 远程登录聊天服务器
Posted
技术标签:
【中文标题】Node.js 远程登录聊天服务器【英文标题】:Node.js telnet chat server 【发布时间】:2016-02-04 23:05:48 【问题描述】:我正在尝试使用 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);
【问题讨论】:
【参考方案1】:我已经简化(某种程度)你的代码来展示如何向用户发送消息:
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);
【讨论】:
以上是关于Node.js 远程登录聊天服务器的主要内容,如果未能解决你的问题,请参考以下文章