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 相关文章推荐
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
Mar 21 Javascript
javascript 内存回收机制理解
Jan 17 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
Apr 14 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
Jul 29 Javascript
移除AngularJS下URL中的#字符的方法
Jun 19 Javascript
AngularJS 让人爱不释手的八种功能
Mar 23 Javascript
js 获取元素所有兄弟节点的实现方法
Sep 06 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
微信小程序中hidden不生效原因的解决办法
Apr 26 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
防止Layui form表单重复提交的实现方法
Sep 10 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小偷的核心程序
2007/04/09 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
Python数组定义方法
2016/04/13 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
python matplotlib拟合直线的实现
2019/11/19 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
华为慧通笔试题
2016/04/22 面试题
自我鉴定三原则
2014/01/13 职场文书
简历的自我评价
2014/02/03 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
财务负责人任命书
2014/06/06 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers