码迷,mamicode.com
首页 > Web开发 > 详细

nodejs基础

时间:2015-10-30 13:59:14      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

1.创建一个聊天服务器 TCP 支持Telnet 连接

 1 // 创建TCP
 2 var net = require(‘net‘);
 3 var chatServer = net.createServer(),
 4 // 保存客户端
 5 clientList = [];
 6 chatServer.on(‘connection‘, function(client) {
 7 client.name = client.remoteAddress + ‘:‘ + client.remotePort;
 8 client.write(‘hi‘ + client.name + ‘\n‘);
 9 // 添加客户端
10 clientList.push(client);
11 // 开始
12 client.on(‘data‘, function(data) {
13 broadcast(data, client)
14 });
15 // 结束
16 client.on(‘end‘, function() {
17 clientList.splice(clientList.indexOf(client), 1)
18 })
19 // 错误
20 client.on(‘error‘, function(e) {
21 console.log(e)
22 })
23 });
24 
25 function broadcast(message, client) {
26 var cleanup = [];
27 for (var i = 0; i < clientList.length; i += 1) {
28 if (client !== clientList[i]) {
29 if (cleantList[i].writable) {
30 clientList[i].write(client.name + " says " + message)
31 } else {
32 // 销毁退出的客户id 内存
33 cleanup.push(clientList[i])
34 clientList[i].destroy()
35 }
36 }
37 }
38 // 消除垃圾索引
39 for (i = 0; i < cleanup.length; i += 1) {
40 clientList.splice(clientList.indexOf(cleanup[i]), 1)
41 }
42 }
43 
44 chatServer.listen(8080)

调用broadcast 函数的时候,检查一下socket 是否可写,以确保不会因为任何
一个不可写的socket 导致异常。不仅如此, 发现任何不可写的socket 后, 还要
通过Socket.destroy() 方法将其关闭并从clientList 中移除。注意, 遍历
clientList 的过程中并没有移除socket,因为我们不想在遍历过程中出现任何未
知的副作用。现在我们的服务器更加健壮了。在真正部署之前,还有一件事情要处
理,那就是记录这些错误.

nodejs基础

标签:

原文地址:http://www.cnblogs.com/xxygogo/p/4923024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!