nodejs中基于TCP协议时下的类IRC程序(中继聊天程序)
来源:互联网 发布:聚氨酯 js聚合物 编辑:程序博客网 时间:2024/04/29 18:22
参考书目:《了不起的nodejs》
服务器代码:
var net = require('net');var count = 0;var users = {};var server = net.createServer(function(conn){console.log('\033[90mnew connection! \033[39m');conn.setEncoding('utf8');var nickname;conn.write('\n>welcom to \033[92mnode-chat\033[39m!'+ '\n' + count + 'other people are connected at this time.'+ '\n > please write your name and press enter:' );count++;conn.on('data',function(data){data = data.replace('\r\n','');if(!nickname){if(users[data]){conn.write('\033[93m> nickname already in use. try again:\033[39m ');return;}else{nickname = data;users[nickname] = conn;broadcast('\033[90m > '+ nickname + ' joined the room\033[39m\n' );}}else{broadcast('\033[96m > ' + nickname + ':\033[39m ' + data + '\n',true);}console.log(data);});conn.on('close',function(){console.log('coming in the close handle');count--;delete users[nickname];broadcast('\033[90m > ' + nickname + 'left the room\033[39m\n',true);console.log('users =');for(var i in users){console.log(i);}console.log('count = '+ count);console.log('-------------');});conn.on('error',function(err){console.log('coming in the handle: ' + err);});function broadcast(msg,exceptMyself){for(var i in users){if(!exceptMyself || i != nickname){users[i].write(msg);}}}});server.listen(3000,function(){console.log('\033[96mserver listening on * : 3000\033[39m');});
listen的回调函数是服务器运行开始就调用,createServer的回调函数是客户端链接成功之后才会调用
客户端代码:
var net = require('net');var stdin = process.stdin;var nickname;var client = net.connect(3000,'localhost');client.setEncoding('utf-8');client.on('connect',function(){console.log('connect successfully');stdin.resume();stdin.setEncoding('utf8');stdin.on('data',handleData);});function handleData(data){if(!nickname){nickname = data;nickname = nickname.replace('\r\n','');}client.write(data);}client.on('data',function(data){console.log(data);});
运行截图:
0 0
- nodejs中基于TCP协议时下的类IRC程序(中继聊天程序)
- 基于TCP的聊天程序(了不起的nodejs chapter6)
- IRC (互联网中继聊天)
- 基于TCP协议的Java聊天小程序
- JAVA程序设计:基于TCP协议的聊天程序
- 一个基于TCP的聊天程序
- 基于TCP 的多线程 聊天程序
- 基于TCP的网络聊天程序
- 基于DES加密的TCP聊天程序
- 基于TCP的python聊天程序(2)
- Java基于Tcp的socket聊天程序
- 基于TCP/UDP的网络聊天程序
- 基于UDP协议的简单聊天程序
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- 网络编程应用:基于TCP协议【实现一个聊天程序】
- JavaSE_基于TCP协议的Socket实现的控制台聊天程序
- 利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)
- 三 转码需求(智源GM813X多国语言OSD开发)
- 仿IOS7的两种对话框
- sizeof和sizeof的问题
- 程序员的幽默
- log4j的使用
- nodejs中基于TCP协议时下的类IRC程序(中继聊天程序)
- PAT (Advanced Level) Practise 1002. A+B for Polynomials (25)
- 【转】大道无形 难以揣摩的苹果商店审核制度
- SQL Server 2008中文版标准教程读书笔记 ADO.NET(复习SQL Server 九)
- 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
- 总线错误和段错误问题的定位
- cocos2dx 3.x 自学笔记 <一> :cocos2dx 3.X 中的回调
- 《iOS7 by Tutorials》系列:iOS7的设计精髓(上)
- logstash源码分析