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给input和textarea设定ie中的focus
May 29 Javascript
仿jQuery的siblings效果的js代码
Aug 09 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
May 03 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
Apr 10 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
百度地图自定义控件分享
Mar 04 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
JavaScript判断浏览器运行环境的详细方法
Jun 30 Javascript
vue实现简单数据双向绑定
Apr 28 Vue.js
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
cmd下运行php脚本
2008/11/25 PHP
php生出随机字符串
2017/07/06 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
js 未结束的字符串常量错误解决方法
2010/06/13 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
Python pymongo模块用法示例
2018/03/31 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
pygame实现弹球游戏
2020/04/14 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
挖掘机司机岗位职责
2014/02/12 职场文书
加入学生会演讲稿
2014/04/24 职场文书
六年级小学生评语
2014/12/26 职场文书
三方协议书
2015/01/27 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis