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使用prototype定义对象类型(转)[
Dec 22 Javascript
newxtree.js代码
Mar 13 Javascript
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
javascript 操作cookies详解及实例
Feb 22 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 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
php错误级别的设置方法
2013/06/17 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
JSONP之我见
2015/03/24 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
微信小程序tabbar底部导航
2018/11/05 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
详解python UDP 编程
2020/08/24 Python
python time()的实例用法
2020/11/03 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
护理自荐信范文
2013/10/05 职场文书
中医药大学毕业生自荐信
2013/11/08 职场文书
事业单位辞职信范文
2014/01/19 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
高三霸气励志标语
2014/06/24 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
网吧消防安全责任书
2014/07/29 职场文书
领导班子对照检查材料
2014/09/22 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
2015年党总支工作总结
2015/05/25 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
MySQL中order by的使用详情
2021/11/17 MySQL