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 相关文章推荐
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 Javascript
js实现简单秒表走动的时钟特效
Mar 25 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
JavaScript实现的拼图算法分析
Feb 13 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
Vue 嵌套路由使用总结(推荐)
Jan 13 Javascript
Vue路由的模块自动化与统一加载实现
Jun 05 Javascript
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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php adodb分页实现代码
2009/03/19 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
ajax异步请求详解
2017/01/06 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
Python selenium自动化测试模型图解
2020/04/15 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
小学运动会加油词
2015/07/18 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
MySQL数据库表约束讲解
2022/06/21 MySQL