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 相关文章推荐
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
JS 文字符串转换unicode编码函数
May 30 Javascript
jQuery 相关控件的事件操作分解
Aug 03 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
让你的博客飘雪花超出屏幕依然看得见
Jan 04 Javascript
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
javascript实现瀑布流加载图片原理
Feb 02 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
详解vue-cli@2.x项目迁移日志
Jun 06 Javascript
JavaScript实现轮播图效果
Oct 30 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
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
js实现左右轮播图
2020/01/09 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
详解python算法之冒泡排序
2019/03/05 Python
python aiohttp的使用详解
2019/06/20 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
专科文秘应届生求职信
2013/11/18 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
珍惜水资源建议书
2014/03/12 职场文书
公司经理任命书
2014/06/05 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
欠条格式范本
2015/07/03 职场文书
2015年除四害工作总结
2015/07/23 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书