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 必填项判断表单是否为空的方法
Sep 14 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
JS远程获取网页源代码实例
Sep 05 Javascript
javascript实现checkbox全选的代码
Apr 30 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
微信小程序 wxapp内容组件 progress详细介绍
Oct 31 Javascript
Vue.js数据绑定之data属性
Jul 07 Javascript
基于js 字符串indexof与search方法的区别(详解)
Dec 04 Javascript
Webpack优化配置缩小文件搜索范围
Dec 25 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
OpenLayers3实现地图显示功能
Sep 25 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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抓即时股票信息
2006/10/09 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
深入PHP FTP类的详解
2013/06/13 PHP
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jQuery在页面加载时动态修改图片尺寸的方法
2015/03/20 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
Python中decorator使用实例
2015/04/14 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
解析Python的缩进规则的使用
2019/01/16 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
用python实现学生管理系统
2020/07/24 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
欢送会主持词
2015/07/01 职场文书