`
cobrano1
  • 浏览: 28663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nodejs 边学边做之telnet 聊天工具

 
阅读更多

 

利用Net module 做的简单聊天工具,可以使用telnet 连接这个程序
var net = require('net');
var config = {
	separate : '\r\n'
};
var connections = new Object();
var server = net.createServer(function (c) {
		var ip = c.remoteAddress;
		var port = c.remotePort;
		connections[ip+port] = c;
		c.write('Welcome to chat room! your ip is ' + ip+port);
		c.write(config.separate + 'I say:');
		var buffers = [];
		c.setEncoding('utf-8');
		c.on('data', function (data) {
			var index = data.indexOf(config.separate);
			if (index < 0) {
				buffers.push(data);
			} else {
				var contents = data.split(config.separate);
				// contents[0] + buffers will send
				var buffer = '';
				for (var i = 0, l = buffers.length; i < l; i++) {
					buffer += buffers[i];
				}
				var message = contents[0] + buffer;
				buffers = [];
				sendAll(c, message);
				// contents[n] will send
				if (contents.length > 2) {
					for (var i = 1, l = contents.length; i < l - 1; i++) {
						sendAll(c, contents[i]);
					}
				}
				// contents[last] will be push into buffers
				buffers.push(new Buffer(contents[contents.length - 1]));
			}
		});
		c.on('close',function(){
			delete connections[ip+port];
		});
	});


function sendAll(conn, message) {
	for (var address in connections) {
		if(connections.hasOwnProperty(address)){
			console.log(address);
			if (conn != connections[address]) {
				console.log('other');
				var what2say = config.separate + conn.remoteAddress + ':' + conn.remotePort +
					'@[' + now() + '] said:' + message +
					config.separate + 'I say: ';
				connections[address].write(what2say);
			} else {
				console.log('self');
				connections[address].write(config.separate + 'I say: ');
			}
		}
	}
}
function now() {
	var date = new Date();
	hour = date.getHours();
	min = date.getMinutes();
	sec = date.getSeconds();
	return hour + ':' + min + ':' + sec;
}
server.listen(8888, function () {
	console.log('listen to 8888....');
});
 上周末又做了一个网页版的, 一会上传。

 

分享到:
评论

相关推荐

    nodejs基础学习视频

    nodejs基础学习视频nodejs基础学习视频nodejs基础学习视频nodejs基础学习视频

    基于NodeJS的web聊天工具ScrollBack.zip

    scrollback chat 是 nodejs 开发的 web 聊天工具,可以方便的嵌入任何网站。 标签:ScrollBack

    NodeJS数据库模型建模工具源码.zip

    NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型...

    NodeJS学习路线Xmind

    是我学习nodejs的Xmind路线,从入门到其它的数据库都已齐全。如果对node的学习没有头绪等,可以下载学习。

    基于微信小程序+Nodejs的学习资料销售平台毕业设计(源码+数据库+说明).rar

    微信开发者工具+nodejs+mysql 【实现功能】 系统的主要功能包括:首页、个人中心、用户管理、资料类型管理、学习资料管理、系统管理、订单管理等功能。 管理员可以根据系统给定的账号进行登录,登录后可以进入微信...

    (完整word版)Nodejs学习文档整理.pdf

    Node.js 的设计哲学使得它非常适合处理实时、数据密集型的网络应用,如实时聊天、协作工具和流媒体服务。通过事件驱动和非阻塞I/O,Node.js 能够高效地处理大量并发连接,降低服务器成本,提高应用的响应速度。同时...

    nodejs+javascript+html制作的网页聊天工具

    完整的网页聊天系统,包括用户注册\登录\广播聊天\上线下线提醒等功能,每一段代码都写了详细的注释,包括完整html网页,客户端和服务器. 测试方法:将nodejs拷贝至D盘根目录,双击start.bat进入服务器,打开浏览器,输入...

    nodejs工具

    nodejs安装工具 好用

    nodeJs学习

    详细的nodejs入门脑图。包含了node学习必须的基础知识。

    NodeJS学习手册

    NodeJS学习手册是一份专为中文用户设计的详尽教程,旨在帮助初学者和有经验的开发者深入理解和掌握NodeJS这一强大的服务器端JavaScript运行环境。NodeJS基于Chrome V8引擎,以其异步非阻塞I/O和事件驱动的特性,为...

    nodejs的即时聊天程序

    在这个聊天程序中,可能包含了`ws`或`socket.io`库,以及其他辅助工具,如日志记录、路由处理等。使用`npm`(Node Package Manager)可以安装这些依赖,并将其放在`node_modules`下。 学习这个项目,你需要了解以下...

    nodejs七本书帮助学习

    nodejs七本书帮助学习:《Node+Web开发》、《Node,+Up+and+Running》、《Node.js+开发指南》、《NODE.js入门手册》、《Node+Web开发》、《Node入门》、《深入浅出Node.js》

    nodejs、webpack学习

    nodejs、webpack学习

    NodeJs思维导图总结

    NodeJs思维导图总结

    nodejs学习.md

    nodejs学习.md

    进阶之初探nodeJS

    so,该篇随笔是建立在”初探nodeJS”之上的,固取名为”进阶之初探nodeJS”。 好了,侃了这多,那么我们即将实现一个什么样的示例呢? 示例说明,如下: 用户通过url之127.0.0.1/login进入登入页面,待用户输入账户...

    NodeJS整理手册文档

    2. Express框架:简化了Web应用开发,提供了路由、中间件等功能,是NodeJS最流行的Web框架之一。 3. Socket.IO:实现实时通信,支持WebSocket,广泛应用于实时应用如聊天、游戏等。 4. Promise和async/await:处理...

    nodejs.pdf nodejs初级教程 nodejs初级教程

    nodejs初级教程

Global site tag (gtag.js) - Google Analytics