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 相关文章推荐
JavaScript DOM 学习第五章 表单简介
Feb 19 Javascript
js操作ajax返回的json的注意问题!
Feb 23 Javascript
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
JavaScript中计算网页中某个元素的位置
Jun 10 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
简单的vue-resourse获取json并应用到模板示例
Feb 10 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
详谈for循环里面的break和continue语句
Jul 20 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
Aug 14 Javascript
JavaScript使用表单元素验证表单的示例代码
Aug 20 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 Session_Regenerate_ID函数双释放内存破坏漏洞
2011/01/27 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
动态表格Table类的实现
2009/08/26 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
python搭建微信公众平台
2016/02/09 Python
python多进程共享变量
2016/04/06 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python底层封装实现方法详解
2020/01/22 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
大数据分析用java还是Python
2020/07/06 Python
Pygame框架实现飞机大战
2020/08/07 Python
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
生物技术研究生自荐信
2013/11/12 职场文书
文秘个人求职信范文
2014/04/22 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
阿凡达观后感
2015/06/10 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书