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 相关文章推荐
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
javascript里使用php代码实例
Dec 13 Javascript
js密码强度检测
Jan 07 Javascript
基于jquery实现图片放大功能
May 07 Javascript
jquery使用on绑定a标签无效 只能用live解决
Jun 02 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
Jun 13 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
深入理解JavaScript的值传递和引用传递
Oct 24 Javascript
swiper4实现移动端导航栏tab滑动切换
Oct 16 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
详解Vue方法与事件
2017/03/09 Javascript
node内置调试方法总结
2018/02/22 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
python中可以声明变量类型吗
2020/06/18 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
办公室员工岗位工作职责
2014/03/10 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
学习经验交流会总结
2015/11/02 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
Python中的嵌套循环详情
2022/03/23 Python