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 相关文章推荐
页面定时刷新(1秒刷新一次)
Nov 22 Javascript
JavaScript中的包装对象介绍
Jan 27 Javascript
AngularJS实现表单验证
Jan 28 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 Javascript
第八篇Bootstrap下拉菜单实例代码
Jun 21 Javascript
js中利用cookie实现记住密码功能
Aug 20 Javascript
原生js轮播特效
May 18 Javascript
关于vue面试题汇总
Mar 20 Javascript
详解如何在微信小程序中愉快地使用sass
Jul 30 Javascript
使用PreloadJS加载图片资源的基础方法详解
Feb 03 Javascript
浅谈es6中的元编程
Dec 01 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 中文和编码判断代码
2010/05/16 PHP
PHP重定向的3种方式
2013/03/07 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
js constructor的实际作用分析
2011/11/15 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
判断js数据类型的函数实例详解
2019/05/23 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python实现360的字符显示界面
2014/02/21 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
理解python中生成器用法
2017/12/20 Python
python实现比较文件内容异同
2018/06/22 Python
学python安装的软件总结
2019/10/12 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
物流业务员岗位职责
2014/02/08 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
补充协议书范本
2014/04/23 职场文书
2016年国陪研修感言
2015/11/18 职场文书
Python装饰器的练习题
2021/11/23 Python