WebSocket网络通信执行流程

news/2024/4/26 12:38:03/文章来源:https://blog.csdn.net/qq_48575500/article/details/129264890

目录

  • WebSocket网络通信执行流程
    • 相关概念
    • 执行流程

WebSocket网络通信执行流程

WebSocket协议:通过单个TCP连接在客户端和服务器之间建立全双工双向通信通道。

WebSocket 对象:提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的 API。

相关概念

1、客户端创建WebSocket对象,其中url表示的就是WebSocket服务端地址

var websocket = new WebSocket(url);

2、@ServerEndpoint 注解

主要是将加入该注解的类定义成一个websocket服务器端, 该注解有个value 属性值,客户端可以通过这个value属性值,也就是URL来连接到WebSocket服务器端

3、(new WebSocket).session.getBasicRemote().sendText(message);

  • Session对象,代表每个客户端websocket对象与WebSocket服务端成功连接的会话

4、@OnOpen 注解

客户端创建的websocket对象与WebSocket服务端成功建立连接后,会触发服务端@OnOpen注解修饰的方法

  • 一般常用来执行“广播消息”操作

5、@OnMessage 注解

客户端websocket对象调用send 方法时,会触发与之连接的服务端,调用服务端@OnMessage注解修饰的方法

  • 一般常用来一对一发送信息

执行流程

1、创建WebSocket对象初始化连接,该对象成功创建之后,对象就代表着与WebSocket服务端之间的TCP连接

2.1、创建成功,触发onopen事件

2.2、创建失败,触发error事件

2.3、断开连接,触发close事件

2.4、服务端向客户端发送消息,触发message事件

2.5、客户端向服务端发送消息,客户端websocket对象调用send事件

3、具体执行流程如下:(聊天室为例)

广播消息

用户成功登录聊天网站(客户端创建WebSocket对象)–>触发WebSocket服务端@OnOpen 注解修饰的方法(在该方法中编写广播消息:”某某用户成功上线啦!“)–>WebSocket服务端(也就是@OnOpen注解修饰的方法中)封装消息,调用(new WebSocket).session.getBasicRemote().sendText(message); 向与该服务端连接的所有客户端websocket对象发送广播消息,触发客户端websocket对象的message 事件进行消息接收

一对一发送消息

用户成功登录客户端创建websocket对象,websocket对象调用send事件–>触发WebSocket服务端@OnMessage 注解修饰的方法(在该方法编写定向消息:”某某,好久不见,最近好吗?“)–>WebSocket服务端(也就是@OnMessage注解修饰的方法中)接收封装发送方的消息,调用(new WebSocket).session.getBasicRemote().sendText(message); 向指定接收方法发送消息,之后触发接收方客户端websocket对象的message事件进行接收

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_75406.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

心系区域发展,高德用一体化出行服务平台“聚”力区域未来

交通,是城市的血脉。通过对人、资源、产业的连接,交通建设往往是城市和区域经济发展的前提。不过,在度过了“要想富,先修路”的初级建设阶段后,交通产业内部也出现了挑战,诸如城市秩序、发展成本、用户使用…

【目标检测】Dynamic Head Unifying Object Detection Heads with Attentions

文章目录一、背景二、方法2.1 scale-aware attention2.2 spatial-aware attention2.3 task-aware attention2.4 总体过程2.5 和现有的检测器适配2.6 和其他注意力机制的关联三、效果四、代码论文链接: https://arxiv.org/pdf/2106.08322.pdf代码链接:htt…

Windows 安装RocketMQ

文章目录一、RocketMQ是什么?二、准备工作1.环境要求2.下载与解压3.启动MQ4. 测试是否成功启动三、安装管理端1. 代码下载2. 修改配置文件3. 启动MQ客户端jar包四、rocketMQ代码的使用入门五、问题记录1. 启动mqbroker.cmd没有反应2.消费者重复消费消息一、RocketMQ…

NCRE计算机等级考试Python真题(六)

第六套试题1、算法的时间复杂度是指A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数正确答案: D2、下列关于栈的叙述中正确的是A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进…

【Django功能开发】如何正确使用定时任务(启动、停止)

系列文章目录 【Django开发入门】ORM的增删改查和批量操作 【Django功能开发】编写自定义manage命令 文章目录系列文章目录前言一、django定时任务二、django-apscheduler基本使用1.安装django-apscheduler2.配置settings.py的INSTALLED_APPS3.通过命令生成定时记录表3.如何创…

嵌入式 linux 系统开发网络的设置

目录 一、前言 二、linux网络静态地址设置 前言 为什么要对linux系统下的ubuntu进行网络设置呢? 因为我们在嵌入式开发中,我们要保证windows系统、linux系统、开发板的ip要处于同一个网段,而默认ubuntu下的linux系统的ip是动态分配的&#…

如何彻底删除SQL Server 2008中的登录账号

我个人遇到的最烦人的事情之一是 SQL Server Management Studio中“服务器名称和登录名”对话框的下拉列表。 以下是我想从 SSMS 连接屏幕中删除某些内容的两种情况: 键入的服务器名称不正确 服务器将来不需要。当我看到服务器的名称,它已经存在了很长一段时间,我知道我不会…

图像处理实战--Opencv实现人像迁移

前言: Hello大家好,我是Dream。 今天来学习一下如何使用Opencv实现人像迁移,欢迎大家一起参与探讨交流~ 本文目录:一、实验要求二、实验环境三、实验原理及操作1.照片准备2.图像增强3.实现美颜功能4.背景虚化5.图像二值化处理6.人…

Day21【元宇宙的实践构想07】—— 元宇宙与人工智能

💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:元宇宙 0.0 写在前面 “元宇宙”在2021年成为时髦的概念。元宇宙到底是什么?元宇…

【论文笔记】Decoupling Representation and Classifier for Long-Tailed Recognition

这一篇其实并不是提出什么新的东西,而且是做了点类似综述的技术调用实验。省流:T-normalization最好用 摘要 现状:Existing solutions usually involve class-balancing strategies, e.g. by loss re-weighting, data re-sampling, or tran…

高燃!GitHub上标星75k+超牛的Java面试突击版

前言不论是校招还是社招都避免不了各种面试。笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个有章可循‘说的意思只是说应对技术面试是可以提前准备。运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大…

扒系统CR8记录

目录 终极改造目标 过程记录 参考 为了将一套在线安装的系统,在不了解其架构、各模块细节的基础上,进行扒弄清楚,作以下记录。 终极改造目标 最终的目标,就是只通过CreMedia8_20230207.tar.gz解压 install 就把业务包安装了&…

安装VMWare虚拟机之后,发现网络贼卡,打开网页很慢

事情描述: 最近忙一个项目,需要到虚拟机中部署环境,安装完之后,就开整自己的项目了。 可以过几天,发现本地网络贼卡,打开各网页慢的一批,一开始还以为是路由器的问题,反复折腾之后排…

[12]云计算概念、技术与架构Thomas Erl-第5章 云使能技术

目录 第五章 云使能技术 5.1宽带网络和Internet架构 5.1.1Internet服务提供者(ISP) 5.1.2无连接分组(数据报网络) 5.1.3基于路由器的互联 5.1.4技术和商业考量 总结 5.2数据中心技术 5.2.1虚拟化 5.2.2标准化与模块化 …

微服务实战01-maven聚合工程

接下来的一段时间,我们将要来学习微服务,本着重实战的原则,你不需要去深究一些相关的原理,只要能跟着教程一步一步做下来,就可以快速地掌握Java微服务开发技巧。 我们学习微服务的第一步,就是要知道怎么创…

VMware安装FreeBSD虚拟机

1. 下载FreeBSD镜像地址 国内阿里云下载地址: freebsd-releases-ISO-IMAGES安装包下载_开源镜像站-阿里云 选择自己需要的版本下载。 2. 创建FreeBSD虚拟机 2.1. 选择操作系统类型 2.2. 导入FreeBSD镜像 3. 安装FreeBSD 第1步:保持默认让其自动进入…

基于vscode开发vue项目的详细步骤教程

1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客 目录 五、vscode集成npm开发vue项目 1、vscode安装所需要的插件: 2、搭建一个vue小页面(入门vue) 3、大致理解…

【音视频开发】 ffmpeg解码API

1.版本迭代ffmpeg解码API经过了好几个版本的迭代,上一个版本的API是解码视频:avcodec_decode_video2解码音频:avcodec_decode_audio4我们现在能看到的很多解码例子用的都是这两个,不过现在ffmpeg更推荐用新一代的API向解码器输送数…

优秀的IC/FPGA开源项目(六)-手语字母翻译器

《优秀的IC/FPGA开源项目》是新开的系列,旨在介绍单一项目,会比《优秀的 Verilog/FPGA开源项目》内容介绍更加详细,包括但不限于综合、上板测试等。两者相辅相成,互补互充~一种智能手套,可将手语字母翻译成带显示器的书…

Studio One6最新版免费的电脑DAW宿主音乐软件

Studio One 6是一款非常专业的音乐创作编辑软件。为用户提供了所有一切你所需要创作的功能,包括所有的歌曲、项目、仪表板等动能,而且还自定义添加配置文件,良好的界面交互和丰富的功能板块。Studio One是一款DAW宿主音乐软件。用于创建&…