Для следующего примера публикации/подписания я не могу заставить его работать. я бегу сценарий и затем я начинаю окно командной строки сСобытие «connect» не вызывается, когда клиент присоединяется
телнет 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 и ожидаемый результат небольшой чат-сервер для телнет слушателей – blfuentes
@KirillSlatin Где вы видите что-нибудь о WebSockets в вопросе? – mscdex
@mscdex, вы правы, моя ошибка –