node.js - 问一个nodejs做的聊天室问题
大家讲道理
大家讲道理 2017-04-17 15:57:58
0
0
358

大家帮忙看一下这代码有没有错
因为当我运行dos系统的客户端时出现了服务器没有信息接收

/******************聊天室服务器********************/
var events = require('events');//引用事件模块
var net = require('net');//创建socket服务器、客户端的模块
var channel = new events.EventEmitter();//创建事件发射器
channel.clients = {};
channel.subscriptions = {};
channel.on('join',function(id,client){
//定义channel发射器,添加join监听器,保存用户的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]);//添加一个专门针对当前用户的broadcast事件监听器
});

 channel.on('leave',function(id){
     channel.removeListener('broadcast',this.subscriptions[id]);
     channel.emit('broadcast',id,id+'has left the chat.\n');

});



var server = net.createServer(function(client){//创建服务器
    var id = client.remoteAddress + ':' +client.remotePort;//remoteAddress远程地址,remotePote远程端口
    channel.emit('join',id,client);//当有用户连接到服务器时发送一个join事件,指明id和client 对象
    client.on('data',function(data){//监听客户端的信息
        data = data.toString();
        channel.emit('broadcast',id ,data);//当有用户发送数据,向频道内所有人发送一个频道boradcast事件
    });

     client.on('close',function(){//当监听到客户端的close事件时,发送leave事件个客户端
         channel.emit('leave',id);
     });
});

server.listen(8000);

这是服务器

这是客户端

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(0)
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿