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

首頁 > 學院 > 開發設計 > 正文

node.js實戰學習筆記01--異步開發簡單的聊天服務器

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

啟動腳本app.js如下:

#!/usr/bin/env node

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

channel.subscriptions = {};

/*添加join事件的監聽器,保存用戶的client對象,以便程序可以將數據發送給用戶*/

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

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

/*忽略發出這一廣播數據的用戶*/

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

    }

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

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

    /*client連接進來,顯示歡迎字幕,并統計當前client數量*/

    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事件的監聽器,通知所有人client用戶離開了*/

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');

});

/*設置最大監聽的數量,默認超過10個監聽會*/

channel.setMaxListeners(50);

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

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

    /*當有client用戶連接到服務器上來時發出一個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用戶斷開連接的監聽事件*/

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

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

啟動node服務:node app.js

操作系統命令行,輸入命令,進入聊天室:telent 127.0.0.1 3000

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 噶尔县| 霸州市| 青冈县| 北流市| 黄山市| 阿拉善左旗| 荆门市| 永修县| 余江县| 镇远县| 上思县| 无锡市| 志丹县| 呼伦贝尔市| 沐川县| 赞皇县| 逊克县| 上饶市| 东阿县| 思南县| 岑巩县| 浦城县| 安溪县| 灵璧县| 安国市| 苍梧县| 鹰潭市| 富源县| 盘锦市| 尼木县| 建瓯市| 兴义市| 北川| 南康市| 大足县| 澎湖县| 贵德县| 昌江| 边坝县| 旌德县| 营口市|