使用nodejs如何实现聊天功能

这篇文章主要介绍了nodejs简单实现tcp服务器端客户端聊天功能,结合实例形式分析了nodejs基于tcp协议实现的聊天程序客户端与服务器端具体步骤与相关操作技巧,代码备有较为详尽的注释便于理解,需要的朋友可以参考下

本文实例讲述了nodejs简单实现TCP服务器端和客户端的聊天功能。分享给大家供大家参考,具体如下:

服务器端

var net = require('net');var server = net.createServer();//聚合所有客户端var sockets = [];//接受新的客户端连接server.on('connection', function(socket){  console.log('got a new connection');  sockets.push(socket);  //从连接中读取数据  socket.on('data', function(data){    console.log('got data:', data);    //广播数据    //每当一个已连接的用户输入数据,就将这些数据广播给其他所有已连接的用户    sockets.forEach(function(otherSocket){      if (otherSocket !== socket){        otherSocket.write(data);      }    });    //删除被关闭的连接    socket.on('close', function(){      console.log('connection closed');      var index = sockets.indexOf(socket);      sockets.splice(index, 1);    });  });});server.on('error', function(err){  console.log('Server error:', err.message);});server.on('close', function(){  console.log('Server closed');});server.listen(4000);

登录后复制

客户端

var net = require('net');var port = 4000;var quitting = false;var conn;var retryTimeout = 3000;  //三秒,定义三秒后重新连接var retriedTimes = 0;  //记录重新连接的次数var maxRetries = 10;  //最多重新连接十次process.stdin.resume(); //process.stdin流来接受用户的键盘输入,这个可读流初始化时处于暂停状态,调用流上的resume()方法来恢复流process.stdin.on('data', function(data){  if (data.toString().trim().toLowerCase() === 'quit'){    quitting = true;    console.log('quitting');    conn.end();    process.stdin.pause();  } else {    conn.write(data);  }});//连接时设置最多连接十次,并且开启定时器三秒后再连接(function connect() {  function reconnect() {    if (retriedTimes >= maxRetries) {      throw new Error('Max retries have been exceeded, I give up.');    }    retriedTimes +=1;    setTimeout(connect, retryTimeout);  }  conn = net.createConnection(port);  conn.on('connect', function() {    retriedTimes = 0;    console.log('connect to server');  });  conn.on('error', function(err) {    console.log('Error in connection:', err);  });  conn.on('close', function() {    if(! quitting) {      console.log('connection got closed, will try to reconnect');      reconnect();    }  });  //打印  conn.pipe(process.stdout, {end: false});})();

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

详解如何实现vuex(详细教程)

详解如何实现vuex(详细教程)

详解如何实现vuex(详细教程)

详解如何实现vuex(详细教程)

详解如何实现vuex(详细教程)

以上就是使用nodejs如何实现聊天功能的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3184806.html

(0)
上一篇 2025年3月31日 21:57:02
下一篇 2025年3月31日 21:57:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.js日志分割策略探讨

    在node.js中,日志分割策略对于维护日志文件的可读性和管理性至关重要。以下是对node.js日志分割策略的探讨,包括使用pm2-logrotate插件和linux自带的logrotate工具。 使用pm2-logrotate进行日志分割…

    互联网 2025年4月1日
    100
  • 在NODEJS中详细介绍http实现

    这篇文章主要介绍了详解nodejs的http实现的技术过程以及详细分析,需要的朋友学习参考下吧。 一、前言 目前,HTTP协议是互联网上应用最为广泛的一种网络协议,也是前端er接触最多的一种协议。通过阅读http模块在nodejs中的实现,…

    编程技术 2025年3月31日
    100
  • 在Nodejs中有关crypto模块安全知识(详细教程)

    本篇文章给大家详细介绍了nodejs中crypto模块的安全知识的相关内容,需要的朋友跟着我一下学习参考下吧。 互联网时代,网络上的数据量每天都在以惊人的速度增长。同时,各类网络安全问题层出不穷。在信息安全重要性日益凸显的今天,作为一名开发…

    2025年3月31日
    100
  • 使用nodejs+mongodb+vue如何配置ueditor

    本篇文章主要介绍了nodejs+mongodb+vue前后台配置ueditor的示例代码,现在分享给大家,也给大家做个参考。 笔者在做一个个人博客项目的时候需要一个富文本框输入组件与后台进行交互,但是官方配置里面没有关于nodejs的,于是…

    2025年3月31日
    100
  • 使用Node如何配置文件(详细教程)

    这篇文章主要给大家介绍了关于node实战之不同环境下配置文件使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面一起学习学习吧。 前言 在使用 Node.js 编写一个完整的项目时,程…

    编程技术 2025年3月31日
    100
  • 在Node中如何获取Excel内容

    这篇文章主要给大家介绍了关于利用node解决简单重复问题系列之excel内容获取的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面一起学习吧。 始因 — 懒 最近项目中,经常…

    2025年3月31日
    100
  • nodejs+server.js创建 Web 服务器

    这次给大家带来nodejs+server.js创建 Web 服务器,nodejs+server.js创建 Web 服务器的注意事项有哪些,下面就是实战案例,一起来看一下。 1、编写服务器代码server.js var http = requ…

    2025年3月31日
    100
  • 如何操作nodejs对密码进行加密

    这次给大家带来如何操作nodejs对密码进行加密,操作nodejs对密码进行加密的注意事项有哪些,下面就是实战案例,一起来看一下。 一、关于node加密模块crypto的介绍 其实就是使用MD5加密的,不太安全,在实际开发中根据自己的方案进…

    编程技术 2025年3月31日
    100
  • nodejs+mysql怎样操作数据库

    这次给大家带来nodejs+mysql怎样操作数据库,nodejs+mysql操作数据库的注意事项有哪些,下面就是实战案例,一起来看一下。 一、几个常用的全局变量 1、__filename获取当前文件的路径2、__dirname获取当前文件…

    编程技术 2025年3月31日
    100
  • 在nodejs+express中如何实现文件上传

    这篇文章主要介绍了使用nodejs+express完成简单的文件上传功能,需要的朋友可以参考下 1.建立express项目 express -e nodejs-uploadfile 登录后复制 2.下载multer中间件 npm i mul…

    编程技术 2025年3月31日
    100

发表回复

登录后才能评论