broadcast命令行聊天室

来源:互联网 发布:windos无法连接到网络 编辑:程序博客网 时间:2024/06/04 01:00


var events = require('events');var net = require('net');var channel = new events.EventEmitter();channel.clients = [];channel.subscriptions = {};channel.setMaxListeners(1);channel.on('join',function(id,client){this.clients[id] = client;this.subscriptions[id] = function(senderId,message){if(id != senderId){let str = senderId+':\n'+message+'----------\n';this.clients[id].write(str);}}this.on('broadcast',this.subscriptions[id]);});channel.on('leave',function(id){channel.removeListener(('broadcast',this.subscriptions[id]));channel.emit('broadcast',id,id+'has left the chat.\n');});channel.on('shutdown',function(){channel.emit('broadcast','','chat has shut down.\n');channel.removeAllListeners('broadcast');})var server = net.createServer(function(client){var id = client.remoteAddress + ':' + client.remotePort;console.log('client connected:'+id)channel.emit('join',id,client);// client.on('connect',function(){// channel.emit('join',id,client);// });client.on('data',function(data){data = data.toString();if(data == 'shutdown\r\n'){channel.emit('shutdown');}channel.emit('broadcast',id,data);});client.on('close',function(){channel.emit('leave',id);})});server.listen(8888);


加入聊天室,bash键入

telnet localhost 8888



原创粉丝点击