今天我来实现一个简单的聊天室,后台用nodejs,客户端与服务端通信用socket.io,这是一个比较成熟的websocket框架.
初始工作
1.安装express,用这个来托管socket.io,以及静态页面,命令npm install express --save,--save可以使包添加到package.json文件里. 2.安装socket.io,命令npm install socket.io --save.
编写服务端代码
首先我们通过express来托管网站,并附加到socket.io实例里,因为socket.io初次连接需要http协议
代码如下:
var app = express();
app.use(express.static(__dirname));
var server = app.listen(8888);
var ws = io.listen(server);
代码如下:
通知其它用户
client.on('disconnect',function(){
if(client.nickname){
client.broadcast.emit('send.message',client.nickname + '离开聊天室!');
}
})
})
由于客户端是通过昵称来标识的,所以服务端需要一个检测昵称重复的函数
代码如下:
编写客服端代码
由于服务端采用第三方websokcet框架,所以前端页面需要单独引用socket.io客户端代码,源文件可以从socket.io模块里找,windows下路径为node_modules\socket.io\node_modules\socket.io-client\dist,这里有开发版和压缩版的,默认引用开发版就行.
前端主要处理输入昵称检查,消息处理,完整代码如下:
代码如下:
总结
nodejs是一个好东西,尤其是在处理消息通讯,网络编程方面,天生的异步IO.