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判断窗口是否最小化的代码(跨浏览器)
Aug 01 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
Mar 13 Javascript
javascript图片预加载实例分析
Jul 16 Javascript
jQuery与JS加载事件用法分析
Sep 04 Javascript
javascript数据类型详解
Feb 07 Javascript
JS实现复选框的全选和批量删除功能
Apr 05 Javascript
结合mint-ui移动端下拉加载实践方法总结
Nov 08 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
jquery向后台提交数组的代码分析
Feb 20 jQuery
vue中echarts引入中国地图的案例
Jul 28 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
php URL验证正则表达式
2011/07/19 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
Symfony的安装和配置方法
2016/03/17 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
js实现文字滚动效果
2016/03/03 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
Node 代理访问的实现
2019/09/19 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏