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 对象定义方法 简单易学
Mar 22 Javascript
JavaScript 创建对象和构造类实现代码
Jul 30 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
js对象继承之原型链继承实例
Jan 10 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 Javascript
深入掌握 react的 setState的工作机制
Sep 27 Javascript
vue-cli构建项目下使用微信分享功能
May 28 Javascript
在vue中多次调用同一个定义全局变量的实例
Sep 25 Javascript
Angular8 Http拦截器简单使用教程
Aug 20 Javascript
js 对象使用的小技巧实例分析
Nov 08 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
Sep 22 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实现比较两个字符串日期大小的方法
2015/05/12 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
Python实现线程池代码分享
2015/06/21 Python
简析Python的闭包和装饰器
2016/02/26 Python
python使用opencv进行人脸识别
2017/04/07 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
宠物店的创业计划书范文
2014/01/11 职场文书
12月红领巾广播稿
2014/02/13 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS