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 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
为jQuery增加join方法的实现代码
Nov 28 Javascript
Javascript的常规数组和关联数组对比小结
May 24 Javascript
JavaScript中获取高度和宽度函数总结
Oct 08 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
Angular2开发——组件规划篇
Mar 28 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
jQuery实现表格隔行换色
Sep 01 jQuery
Vue 中对图片地址进行拼接的方法
Sep 03 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连接MySQL代码的参数说明
2008/06/07 PHP
php xml-rpc远程调用
2008/12/19 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
2013/08/13 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
详解tween.js的使用教程
2017/09/14 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
iPad和Surface Pro蓝牙键盘:Brydge
2018/11/10 全球购物
校园十大歌手策划书
2014/02/01 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
限期整改通知书
2015/04/22 职场文书
广播体操比赛主持词
2015/06/29 职场文书
九九重阳节致辞
2015/07/31 职场文书
MySQL系列之十二 备份与恢复
2021/07/02 MySQL