iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于Node.js怎么实现WebSocket通信
  • 397
分享到

基于Node.js怎么实现WebSocket通信

2023-06-17 09:06:52 397人浏览 泡泡鱼
摘要

这篇“基于node.js怎么实现websocket通信”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于node.js怎么实

这篇“基于node.js怎么实现websocket通信”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于node.js怎么实现WEBSocket通信”文章吧。

node的依赖包

node中实现Websocket的依赖包有很多,websocket、ws均可,本文选取ws来实现,首先安装依赖

npm install ws

聊天室实例

假如A,B,C,D用户均通过客户端连接到Websocket服务,其中每个人发的消息都需要将其通过Websocket转发给其他人,此场景类似于服务端将A的消息广播给组内其他用户。

服务端实现

首先来看服务端程序,具体的工作流程分以下几步:

  1. 创建一个WebSocketServer的服务,同时监听8080端口的连接请求。

  2. 每当有新的客户端连接该WebSocket成功时,便将该连接push到连接池的数组中。

  3. 监听message事件,当该事件发生时,遍历连接池,以连接为单位将该消息转发到对应的客户端

  4. 监听close事件,当该事件发生时,将该连接移出连接池

服务端代码

var WebSocketServer = require('ws').Server,  wss = new WebSocketServer({port: 8080});// 连接池var clients = [];wss.on('connection', function(ws) {  // 将该连接加入连接池  clients.push(ws);  ws.on('message', function(message) {    // 广播消息    clients.forEach(function(ws1){      if(ws1 !== ws) {        ws1.send(message);      }    })  });  ws.on('close', function(message) {    // 连接关闭时,将其移出连接池    clients = clients.filter(function(ws1){      return ws1 !== ws    })  });});

客户端实现

<html><input type="text" id="text"><input type="button" onclick="sendMessage()" value="online"><script>  var ws = new WebSocket("ws://localhost:8080");  ws.onopen = function (e) {    console.log('Connection to server opened');  }  ws.onmessage = function(event) {     console.log('Client received a message', event);   };   ws.onclose = function (e) {    console.log('connection closed.');  }  function sendMessage() {      ws.send(document.getElementById('text').value);  }</script></html>

如何发现用户?

通过上述的demo可以看到,WebSocket都是基于连接的,也就是说我们知道data是从那个connection发过来,但并不知道使用客户端的是李雷或者韩梅梅,这可如何是好?再想另一种场景,李雷只想给韩梅梅发消息,不想将消息广播给其他客户端,此时我们就需要在Server端能够标识用户身份和连接的对应关系。

于是,需要在客户端连接到WebSocket之后,紧接着再发一次请求,告诉Server我的user_id是多少,Server将此user_id与connection之间的关系存储在HashMap中,至此就建立了user_id与connection的对应关系。当需要发送消息给对应的客户端,从此hashmap中取出对应用户的connection信息,调用其send方法发出消息即可。

依赖包

npm install hashmap

服务端实现

var WebSocketServer = require('ws').Server, webSocketServer = new WebSocketServer({port: 8080});var HashMap = require('hashmap');// record the clientvar userConnectionMap = new HashMap();var connectNum = 0;// connectionwebSocketServer.on('connection', function(ws) {  ++ connectNum;  console.log('A client has connected. current connect num is : ' + connectNum);  ws.on('message', function(message) {    var objMessage = JSON.parse(message);    var strType = objMessage['type'];    switch(strType) {      case 'online' :         userConnectionMap.set(objMessage['from'], ws);        break;      default:        var targetConnection = userConnectionMap.get(objMessage['to']);        if (targetConnection) {          targetConnection.send(message);        }    }  });  ws.on('close', function(message) {    var objMessage = JSON.parse(message);    userConnectionMap.remove(objMessage['from']);  });});

以上就是关于“基于Node.js怎么实现WebSocket通信”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 基于Node.js怎么实现WebSocket通信

本文链接: https://www.lsjlt.com/news/287968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于Node.js怎么实现WebSocket通信
    这篇“基于Node.js怎么实现WebSocket通信”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“基于Node.js怎么实...
    99+
    2023-06-17
  • 基于Node.js的WebSocket通信实现
    node的依赖包 node中实现Websocket的依赖包有很多,websocket、ws均可,本文选取ws来实现,首先安装依赖 npm install ws 聊天室实例 假如A,B,C,D用户均通过...
    99+
    2022-06-04
    通信 Node js
  • 基于Node.js如何实现WebSocket通信
    这篇文章将为大家详细讲解有关基于Node.js如何实现WebSocket通信,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。node的依赖包node中实现Websocket...
    99+
    2022-10-19
  • Node.js怎么实现WebSocket通信
    这篇文章主要讲解了“Node.js怎么实现WebSocket通信”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js怎么实现WebSocket通信”吧!node的依赖包node中实现...
    99+
    2023-07-04
  • 怎么用Node.js实现WebSocket通信
    本篇内容介绍了“怎么用Node.js实现WebSocket通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!node的依赖包node中实现W...
    99+
    2023-07-04
  • golang基于websocket通信tcp keepalive实例分析
    本文小编为大家详细介绍“golang基于websocket通信tcp keepalive实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“golang基于websocket通信tcp keepalive实例分析”文...
    99+
    2023-06-30
  • Android Flutter基于WebSocket怎么实现即时通讯功能
    这篇文章主要介绍“Android Flutter基于WebSocket怎么实现即时通讯功能”,在日常操作中,相信很多人在Android Flutter基于WebSocket怎么实现即时通讯功能问题上存在疑惑,小编查阅了各...
    99+
    2023-06-29
  • AndroidFlutter基于WebSocket实现即时通讯功能
    目录前言联系人界面构建聊天界面的实现消息界面的 MultiProvider运行效果前言 我们在前面花了很大篇幅介绍 Provider 状态管理,这是因为在 Flu...
    99+
    2022-11-13
  • 基于C#实现串口通信
    本文实例为大家分享了C#实现串口通信的具体代码,供大家参考,具体内容如下 1.基本概念 2.前端winForm布局如下(仅仅为了实现功能,布局略丑) 3.代码实现如下 names...
    99+
    2022-11-13
  • 基于Qt的TCP实现通信
    本文实例为大家分享了基于Qt的TCP实现通信的具体代码,供大家参考,具体内容如下 一、tcp介绍 TCP是面向连接的可靠传输的协议,协议规定通信的双方是服务端和客户端的两个角色:服务...
    99+
    2022-11-13
  • 怎么用websocket实现前后端通信
    这篇文章主要介绍了怎么用websocket实现前后端通信,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 websocket通信是很好玩的,...
    99+
    2022-10-19
  • 基于websocket的聊天功能怎么实现
    本篇内容主要讲解“基于websocket的聊天功能怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于websocket的聊天功能怎么实现”吧!   一...
    99+
    2022-10-19
  • 基于html5和nodejs相结合实现websocket即使通讯
    最近都在学习HTML5,做canvas游戏之类的,发现HTML5中除了canvas这个强大的工具外,还有WebSocket也很值得注意。可以用来做双屏互动游戏,何为双屏互动游戏?就是通过移动端设备来控制PC...
    99+
    2022-06-04
    通讯 nodejs websocket
  • 基于React.js和Node.js怎么实现SSR
    这篇文章主要介绍基于React.js和Node.js怎么实现SSR,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基础概念SSR:即服务端渲染(Server Side Render) ...
    99+
    2022-10-19
  • websocket结合node.js实现双向通信的示例代码
    首先我们需要了解,什么是websocket,它的作用和优势是什么,为什么要用它。 什么是websocket websocket是基于TCP的一种双向通信协议。在此之前,一直是采用轮询...
    99+
    2023-02-10
    websocket node.js双向通信 node.js双向通信
  • 基于QT的TCP通信服务的实现
    目录一、结构1.1 套接字1.2 socket通信流程1.3 QTcpsocket1.4 QTcpServer二、设计UI2.1 客户端UI2.2 服务器端UI三、核心代码四、效果图...
    99+
    2022-11-13
  • JS怎么实现基于websocket的多端桥接平台
    这篇文章给大家分享的是有关JS怎么实现基于websocket的多端桥接平台的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 要调试什么我们主要要知道调试什么,最终回去到什么样子的结果:调试接口,传入接口地址,即...
    99+
    2023-06-15
  • C++基于boostasio实现synctcpserver通信流程详解
    目录一.功能介绍二.string类型数据交互2.1 程序源码2.2 编译&&执行2.3 程序执行结果三.byte类型数据交互3.1 程序源码3.2 编译&&a...
    99+
    2022-11-13
  • 微信小程序 | 基于小程序+Java+WebSocket实现实时聊天功能
    一、文章前言 此文主要实现在小程序内聊天对话功能,使用Java作为后端语言进行支持,界面友好,开发简单。 二、开发流程及工具准备 2.1、注册微信公众平台账号。 2.2、下载安装Inte...
    99+
    2023-09-06
    小程序 微信小程序 java
  • C#基于SerialPort类怎么实现串口通讯
    本篇内容主要讲解“C#基于SerialPort类怎么实现串口通讯”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#基于SerialPort类怎么实现串口通讯”吧!最终效果窗体设置:using&n...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作