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 相关文章推荐
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
Mar 04 Javascript
js 数组的for循环到底应该怎么写?
May 31 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
JavaScript中三个等号和两个等号你了解多少
Jul 04 Javascript
js实现数组内数据的上移和下移的实例
Nov 14 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
vue搜索和vue模糊搜索代码实例
May 07 Javascript
使用 node.js 模仿 Apache 小部分功能
Jul 07 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 jQuery
微信小程序实现watch监听
Jun 04 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怎样调用MSSQL的存储过程
2006/10/09 PHP
php 函数使用方法与函数定义方法
2010/05/09 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
php输出形式实例整理
2020/05/05 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python数据集切分实例
2018/12/08 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
Python如何解除一个装饰器
2020/08/07 Python
python 制作磁力搜索工具
2021/03/04 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
大学应届生求职简历的自我评价
2013/10/08 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
房屋改造计划书
2014/01/10 职场文书
银行委托书范本
2014/04/04 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
SQL基础的查询语句
2021/11/11 MySQL
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python