国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

node.js實戰(zhàn)學習筆記01--異步開發(fā)簡單的聊天服務器

2019-11-14 10:43:39
字體:
來源:轉載
供稿:網友

啟動腳本app.js如下:

#!/usr/bin/env node

var events = require('events');var net = require('net');var channel = new events.EventEmitter();channel.clients = {};

channel.subscriptions = {};

/*添加join事件的監(jiān)聽器,保存用戶的client對象,以便程序可以將數(shù)據(jù)發(fā)送給用戶*/

channel.on('join',function(id,client){    this.clients[id] = client;

    this.subscriptions[id] = function(senderId,message){

/*忽略發(fā)出這一廣播數(shù)據(jù)的用戶*/

      if(id != senderId){        this.clients[id].write(message);      }

    }

    /*添加一個專門針對當前用戶的broadcast事件監(jiān)聽器*/

    this.on('broadcast',this.subscriptions[id]);

    /*client連接進來,顯示歡迎字幕,并統(tǒng)計當前client數(shù)量*/

    var welcome = "Welcome!/n"+'Guests online: '+this.listeners('broadcast').length;

    client.write(welcome+'/n');

    /*通知其它client用戶,當前client用戶進入聊天室*/

    channel.emit('broadcast',id,id+' come in the chat./n');

});

/*添加client用戶離開的leave事件的監(jiān)聽器,通知所有人client用戶離開了*/

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

});

/*關閉聊天室,移出所有監(jiān)聽*/

channel.on('shutdown',function(){channel.emit('broadcast','','chat has shut down./n');    channel.removeAllListeners(      'broadcast');

});

/*設置最大監(jiān)聽的數(shù)量,默認超過10個監(jiān)聽會*/

channel.setMaxListeners(50);

var server = net.createServer(function(client){    var id = client.remoteAddress + ':' + client.remotePort;

    console.log('client id '+id);

    /*當有client用戶連接到服務器上來時發(fā)出一個join事件*/

    channel.emit('join',id,client);    client.on('data',function(data){data = data.toString();

console.log(data);

/*收到s字符,關閉聊天室*/

if(data == "s"){console.log(data);channel.emit('shutdown');

}else{

/*廣播聊天信息*/

channel.emit('broadcast',id,data);

        }

    });

/*添加client用戶斷開連接的監(jiān)聽事件*/

    client.on('close',function(){channel.emit('leave',id);    });});server.listen(3000);

console.log('started ... ');

啟動node服務:node app.js

操作系統(tǒng)命令行,輸入命令,進入聊天室:telent 127.0.0.1 3000

多開幾個命令窗口,查看效果。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄱阳县| 宣汉县| 张北县| 武穴市| 华宁县| 大埔县| 抚松县| 江川县| 九寨沟县| 武邑县| 福建省| 福清市| 通渭县| 黄大仙区| 壶关县| 巴林右旗| 大丰市| 津市市| 勃利县| 石屏县| 务川| 东台市| 洮南市| 读书| 黎城县| 克什克腾旗| 霸州市| 桑植县| 闽清县| 宝坻区| 克拉玛依市| 延津县| 肥城市| 扬州市| 梧州市| 马尔康县| 申扎县| 咸阳市| 成安县| 北辰区| 桐梓县|