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 相关文章推荐
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
Sep 12 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
Mar 03 Javascript
JavaScript事件委托实例分析
May 26 Javascript
JS采用绝对定位实现回到顶部效果完整实例
Jun 20 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
关于微信小程序登录的那些事
Jan 08 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
Vue实现手机计算器
Aug 17 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
Python编程中的反模式实例分析
2014/12/08 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
简单实现python数独游戏
2018/03/30 Python
Django 使用logging打印日志的实例
2018/04/28 Python
python读取Excel表格文件的方法
2019/09/02 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
销售顾问的岗位职责
2013/11/13 职场文书
求职自荐信范文格式
2013/11/29 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
亲戚关系证明
2015/06/24 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android