Node.js制作简单聊天室


Posted in Javascript onJanuary 12, 2017

看了TCP的有关知识,写了个基于NET的聊天室。

var net = require('net');

var count = 0,
  users = {};

var server = net.createServer(function (conn) {
  console.log('连接到');
  conn.write(
     "\r\n > welcome to node-chat!"
    + "\r\n > " + count + " other people are connected at this time."
    + "\r\n > please write your name and press enter: "
   );
  count++;
  // 代表当前连接的昵称
  var nickname;
  console.log(conn);
  conn.on('data', function (data) {
    // 删除\r\n
    // data = data.replace('\r\n', '  ');

    // 当前注册的昵称不存在
    if (!nickname) {
      // 用户名存在
      if(users[data]) {
        conn.write('nickname in use');
        return;
      } else {
        // 用户名给nickname
        nickname = data;
        users[nickname] = conn;
        for (var i in users) {
          users[i].write('\r\n > ' + nickname + ' join our room \r\n > I: ');
        }
      }
    } else {
      // 开始聊天
      for (var i in users) {
        if (i != nickname) {
          users[i].write('\r\n > ' + nickname + ': ' + data);

        }
      }
    } 
  });

  conn.on('close', function () {
    count--;
  });
  conn.setEncoding('utf8');


});

server.listen(3000, function () {
  console.log('服务器监听端口3000');
})

运行截图:

终端:

Node.js制作简单聊天室

telnet 这里截取了两个网友

Node.js制作简单聊天室

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
iframe 父窗口和子窗口相互的调用方法集锦
Dec 15 Javascript
无阻塞加载脚本分析[全]
Jan 20 Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
基于react组件之间的参数传递(详解)
Sep 05 Javascript
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
React手稿之 React-Saga的详解
Nov 12 Javascript
Vue动态创建注册component的实例代码
Jun 14 Javascript
electron 安装,调试,打包的具体使用
Nov 06 Javascript
Webpack的Loader和Plugin的区别
Nov 09 Javascript
jQuery 插件实现随机自由弹跳气泡样式
Jan 12 #Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 #Javascript
jQuery Validate 数组 全部验证问题
Jan 12 #Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 #Javascript
React创建组件的三种方式及其区别
Jan 12 #Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
Jan 12 #Javascript
JavaScript利用Date实现简单的倒计时实例
Jan 12 #Javascript
You might like
PHP编程网上资源导航
2006/10/09 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
基于PHP服务端图片生成缩略图的方法详解
2013/06/20 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
javascript 精粹笔记
2010/05/09 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
Python入门篇之编程习惯与特点
2014/10/17 Python
Python简单进程锁代码实例
2015/04/27 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
对pandas中to_dict的用法详解
2018/06/05 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
Python3.8中使用f-strings调试
2019/05/22 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
美丽的现代设计家具:2Modern
2018/07/26 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
如何写好建议书
2014/03/13 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
关键在于落实心得体会
2014/09/03 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
幽灵公主观后感
2015/06/09 职场文书