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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
Jun 23 Javascript
jQuery EasyUI NumberBox(数字框)的用法
Jul 08 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
javascript获取所有同类checkbox选项(实例代码)
Nov 07 Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 Javascript
js获取checkbox复选框选中的选项实例
Aug 24 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
js实现随机点名小功能
Aug 17 Javascript
javascript帧动画(实例讲解)
Sep 02 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
Apr 26 Javascript
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
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微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
Python使用MONGODB入门实例
2015/05/11 Python
python 读取修改pcap包的例子
2019/07/23 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Python日志处理模块logging用法解析
2020/05/19 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
我的中国梦演讲稿高中篇
2014/08/19 职场文书
公民授权委托书范本
2014/09/17 职场文书
技术员岗位职责范本
2015/04/11 职场文书
百年孤独读书笔记
2015/06/29 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
AJAX学习笔记
2021/05/18 Javascript
一篇文章带你复习java知识点
2021/06/28 Java/Android
MYSQL常用函数介绍
2022/05/05 MySQL