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 处理事件绑定的一些兼容写法
Dec 24 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
Apr 24 Javascript
jQuery.getScript加载同域JS的代码
Feb 13 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
requireJS使用指南
Apr 27 Javascript
AngularJS ng-app 指令实例详解
Jul 30 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 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
main.php
2006/12/09 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
js命名空间写法示例
2015/12/18 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
angular.fromJson与toJson方法用法示例
2017/05/17 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
详解Python中dict与set的使用
2015/08/10 Python
详解Python 切片语法
2019/06/10 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
python路径的写法及目录的获取方式
2019/12/26 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
优秀毕业大学生推荐信
2013/11/13 职场文书
办公室内勤工作职责
2013/12/11 职场文书
总经理职责
2013/12/22 职场文书
教师简历自我评价
2014/02/03 职场文书
工厂搬迁方案
2014/05/11 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL