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的函数
Jan 31 Javascript
映彩衣的js随笔(js图片切换效果)
Jul 31 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
js中的json对象详细介绍
Oct 29 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
AngularJS双向绑定和依赖反转实例详解
Apr 15 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
Apr 22 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
vue实现点击展开点击收起效果
Apr 27 Javascript
ES6知识点整理之对象解构赋值应用示例
Apr 17 Javascript
jquery实现有过渡效果的tab切换
Jul 17 jQuery
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 5.0 Pear安装方法
2006/12/06 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php统计文章排行示例
2014/03/04 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
php支付宝接口用法分析
2015/01/04 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
.NET微信公众号开发之创建自定义菜单
2015/07/16 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python异常处理try except过程解析
2020/02/03 Python
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
成语的广告词
2014/03/19 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书