日期:2014-05-16  浏览次数:20438 次

[NodeJS]使用Node.js写一个简单的在线聊天室

声明:教程来自《Node即学即用》。源码案例均出自此书。博文仅为个人学习笔记。


第一步:创建一个聊天服务器。

首先,我们先来写一个Server:

var net = require('net')

var chatServer = net.createServer()

chatServer.on('connection',function(client){
	client.write('connection~~~\n')
	client.end()
})

chatServer.listen(2333)

console.log('Server')

可以使用telnet命令访问服务器:






第二步:监听所有的连接请求

服务器源代码:

var net = require('net')

var chatServer = net.createServer()

chatServer.on('connection',function(client){
	client.write('Hello~~\n')
	client.on('data',function(data){
		console.log(data);
	})
})

chatServer.listen(2333)

console.log('Server')	

这里添加了一个事件监听器client.on(),每当client发送data的时候这个函数都会被调用。所以现在不论发送什么数据,服务器都会显示出来:


但是这里有个问题:返回的内容均为乱码,因为JS不能很好的处理二进制数据,所以Node增加了一个buffer库来帮助服务器。

打印的字符实际上是16进制的字节数据,可以保持二进制的格式,因为TCP和Telnet都能处理它们。


第三步:客户端之间的通信:

var net = require('net')

var chatServer = net.createServer()		//服务器
var clientList = []						//客户端数组

chatServer.on('connection',function(client){
	client.write('Hello~Client~\n')
	clientList.push(client)
	client.on('data',function(data){
		for (var i = 0; i < clientList.length; i++) {
			clientList[i].write(data)
		};
	})
})

chatServer.listen(2333)

console.log('Server')

这个就是一个最简单的聊天服务器了,可以打开多个终端,输入telnet localhost 2333访问服务器。



下一步,改进消息发送和显示的方式,让页面更友善一些。