基于node.js 创建的微型聊天室应用程序

最近在学习nodejs,参考的书籍为《NODE即学即用》,体会了一把传说中的node.js,感觉还可以的。

实验的是在ubuntu下完成的,需要提前安装好node.js和npm.需要具备一定的javascript基础。

其主要的代码如下:

const net = require('net');

const chatServer = net.createServer();
// 定义客户列表
var clientList = [];

chatServer.on('connection',function (client) {
  // 提示连接成功
  client.write('连接服务器成功...\n');

  // 放到客户列表中
  clientList.push(client);

  // 监听到来自客户端发送的消息
  client.on('data',function (data) {
    client.name = client.remoteAddress+":"+client.remotePort;
    broadcast(data,client);
  });

  // 监听断开时候,关闭端口
  client.on('end',function() {
    clientList.splice(clientList.indexOf(client),1);
  });

  client.on('error',function(e) {
    console.log(e);
  });
});

chatServer.listen(9000);

console.log("tcp 服务器链接已经建立...");

// 定义广播的方法
function broadcast(message,client) {
  var cleanup = [];
  for (var i = 0; i < clientList.length; i++) {
    if(client!==clientList[i]){
      if(clientList[i].writable){
        clientList[i].write(client.name+" 说 "+message);
      }else{
        cleanup.push(clientList[i]);
        clientList[i].destory();
      }
    }
  }
  // 删除死节点
  for(var i = 0;i<cleanup.length;i++){
    clientList.splice(clientList.indexOf(cleanup[i]),1);
  }

}

客户端A:

客户端B:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值