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 基础知识 被自己遗忘的
Oct 15 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
BootstrapValidator超详细教程(推荐)
Dec 07 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
Jan 25 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
Apr 11 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
Sep 02 Javascript
vue移动端写的拖拽功能示例代码
Sep 09 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将向Java靠拢
2006/10/09 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
pandas通过loc生成新的列方法
2018/11/28 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
如何保障Web服务器安全
2014/05/05 面试题
linux面试题参考答案(5)
2014/09/01 面试题
如何获得EntityManager
2014/02/09 面试题
大学生的创业计划书就该这么写
2014/01/30 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
村干部承诺书
2014/03/28 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
会计毕业生自荐书
2014/06/12 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
储备店长岗位职责
2015/04/14 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang