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 相关文章推荐
告诉大家什么是JSON
Jun 10 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
Aug 08 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
May 12 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
vue 实现全选全不选的示例代码
Mar 29 Javascript
vue slots 组件的组合/分发实例
Sep 06 Javascript
js常用正则表达式集锦
May 17 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
Sep 02 Javascript
JS面向对象之多选框实现
Jan 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 批量删除 sql语句
2009/06/05 PHP
composer.lock文件的作用
2016/02/03 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
斜45度寻路实现函数
2009/08/20 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
解析vue中的$mount
2017/12/21 Javascript
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
Python 字符串换行的多种方式
2018/09/06 Python
python实现简单成绩录入系统
2019/09/19 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
五年级学生评语大全
2014/12/26 职场文书
大学生实习介绍信
2015/05/05 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
vue修饰符.capture和.self的区别
2022/04/22 Vue.js