Node.js实现简单聊天服务器


Posted in Javascript onJune 20, 2014

使用Nodejs是如此简单的实现了一个简单的聊天服务器

实现代码如下:

var net = require('net');
 
var chatServer = net.createServer(),clientList = [];
 
chatServer.on("connection",function(client){
  client.name = client.remoteAddress + ":" + client.remotePort;
  client.write("Hi! "+client.name+" \n");
  clientList.push(client);
 
  client.on("data",function(data){
    //数据发送给客户端
    broadcast(data,client);
    // clientList[i].write(data);
  });
 
  client.on("end",function(){
    clientList.splice(clientList.indexOf(client),1);
  });
 
  client.on("error",function(e){
    console.log(e)
  });
});
chatServer.listen(9000)
 
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 = "says:"+message);
      }else{
        cleanup.push[clientList[i]];
        clientList[i].destory();
      }
    }
  }
}

使用过程就是:

启动js

node chat.js

连接方式:telnet

telnet 127.0.0.1 9000
Javascript 相关文章推荐
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
Jun 08 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
基于jquery和svg实现超炫酷的动画特效
Dec 09 Javascript
vue生成token并保存到本地存储中
Jul 17 Javascript
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
Javascript中绑定click事件的四种方式介绍
Oct 26 Javascript
js设置默认时间跨度过程详解
Jul 17 Javascript
vue组件创建的三种方式小结
Feb 03 Javascript
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
SuperSlide2实现图片滚动特效
Jun 20 #Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 #Javascript
js常用数组操作方法简明总结
Jun 20 #Javascript
JS实现闪动的title消息提醒效果
Jun 20 #Javascript
jquery操作checked属性以及disabled属性的多种方法
Jun 20 #Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 #Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 #Javascript
You might like
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
搭建vue开发环境
2018/07/19 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python获取apk文件URL地址实例
2013/11/01 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
python获取地震信息 微信实时推送
2019/06/18 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
幼儿园中秋节活动反思
2014/02/16 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
小学亲子活动总结
2014/07/01 职场文书
大学同学会活动方案
2014/08/20 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
年度考核表个人总结
2015/03/06 职场文书
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫