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 相关文章推荐
js判断样式className同时增加class或删除class
Jan 30 Javascript
jquery 提交值不为空的元素示例代码
May 10 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
Dec 11 Javascript
Javascript中的异步编程规范Promises/A详细介绍
Jun 06 Javascript
js用拖动滑块来控制图片大小的方法
Feb 27 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 Javascript
layui复选框的全选与取消实现方法
Sep 02 Javascript
jquery实现吸顶导航效果
Jan 08 jQuery
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
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
javascript parseInt与Number函数的区别
2010/01/21 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
python中requests使用代理proxies方法介绍
2017/10/25 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python 多维List创建的问题小结
2019/01/18 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
python3判断IP地址的方法
2021/03/04 Python
初中音乐教学反思
2014/01/12 职场文书
初中校园广播稿
2014/02/02 职场文书
中国好声音华少广告词
2014/03/17 职场文书
微电影大赛策划方案
2014/06/05 职场文书
商务邀请函
2015/01/30 职场文书
民事代理词范文
2015/05/25 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
mysql知识点整理
2021/04/05 MySQL
Pytorch可视化的几种实现方法
2021/06/10 Python
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA