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 相关文章推荐
基于jQuery实现模拟页面加载进度条
Apr 01 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
jQuery中:selected选择器用法实例
Jan 04 Javascript
javascript计时器详解
Feb 28 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
javascript 中的try catch应用总结
Apr 01 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
vuejs 单文件组件.vue 文件的使用
Jul 28 Javascript
详解Angular2学习笔记之Html属性绑定
Jan 03 Javascript
JavaScript判断日期时间差的实例代码
Mar 01 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 学习路线与时间表
2010/02/21 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
理解jquery事件冒泡
2016/01/03 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
python GUI实例学习
2017/11/21 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
区分python中的进程与线程
2020/08/13 Python
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
北大青鸟学生求职信
2013/09/24 职场文书
写给女朋友的道歉信
2014/01/08 职场文书
触摸春天教学反思
2014/02/03 职场文书
工作决心书
2014/03/11 职场文书
门面房租房协议书
2014/08/20 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
初一语文教学反思
2016/03/03 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android