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获取某月的最后一天日期的简单实例
Jun 22 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
AngularJS中ng-class用法实例分析
Jul 06 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
VueJs 搭建Axios接口请求工具
Nov 20 Javascript
在一个页面实现两个zTree联动的方法
Dec 20 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
angularJs select绑定的model取不到值的解决方法
Oct 08 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
jquery实现抽奖功能
Oct 22 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编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
php自动加载代码实例详解
2021/02/26 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
js实现计算器功能
2020/08/10 Javascript
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python