【发布时间】:2015-11-05 14:36:30
【问题描述】:
对于以下发布/订阅示例,我无法使其工作。 我运行脚本,然后用
启动命令窗口远程登录 127.0.0.1 8888
然后命令窗口完全变黑。我什至没有看到预期的joined! 消息,但是当我输入一些内容时,我确实得到了written
var events = require('events');
var net = require('net');
var channel = new events.EventEmitter();
channel.clients = {};
channel.subscriptions = {};
channel.on('join', function(id, client){
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){
var id = client.remoteAddress + ':' + client.remotePort;
client.on('connect', function(){
channel.emit('join', id, client);
console.log('joined!')
});
client.on('data', function(data){
data = data.toString();
channel.emit('broadcast', id, data);
console.log('written');
});
});
server.listen(8888);
我正在使用具有通用客户端远程登录功能的 Windows 10。 我也打开了 8888 端口,虽然它是在 'localhost' 中运行的
我错过了什么吗?或者是什么原因因为它没有被引发'connect'事件?(这会引发channel.emit('join', id, client)永远不会执行
【问题讨论】:
-
好吧,这段代码取自一本关于学习 NodeJS 的书,预期的结果是一个用于 telnet 侦听器的小型聊天服务器
-
@KirillSlatin 你在哪里看到关于 WebSockets 的问题?
-
@mscdex,你是对的,我的错