用Node.js实现群聊
在这篇文章里,我展示一下怎么用Node.js实现一个简单的群聊聊天功能,代码只有短短30行,却能实现这样一个功能,不得不赞叹Node.js的强大。
一段视频
这段视频展示了Node.js实现的群聊效果。我首先打开了一个终端窗口,执行了服务器端程序。
node test.js
随后,打开3个终端窗口,作为客户端,在每个客户端中请求连接群聊服务。
nc localhost 4001
这时,服务端接收到连接请求,连接成功。随后,客户端发起聊天,如上视频所示。
源代码(test.js)
var net = require('net'); var server = net.createServer(); var sockets = []; server.on('connection', function(socket) { console.log('got a new connection'); socket.write('System say: Welcome!\n'); // 存储已建立的连接 sockets.push(socket); socket.on('data', function(data) { sockets.forEach(function(otherSocket) { if( otherSocket !== socket ) { // 向其他人发送消息 var prefix = 'User ' + sockets.indexOf(socket) + ' say: '; otherSocket.write(prefix + data); } }); }); socket.on('close', function() { console.log('connection closed'); var index = sockets.indexOf(socket); // 删除已经断开的连接 sockets.splice(index, 1); }); }); server.on('error', function(err) { console.log('Server error: ', err.message); }); server.on('close', function() { console.log('Server closed'); }); server.listen(4001);
总结
这段短短30行的代码很好地演示了怎样用Node.js建一个TCP服务器,如果你觉得有意思,那就从此开始你的Node.js之旅吧!