WebSocket介绍与使用

devtools/2025/1/11 21:58:15/

1.简介

在我们平时写的web项目中,大多是使用http协议,但是http协议是典型的一问一答的模式,只能由客户端向服务器发送请求,再由服务器返回响应,但实际开发中,很多场景都需要服务器主动发送消息给服务端,这时就需要使用WebSocket协议。

WebSocket是基于TCP协议实现的应用层协议,它通过 HTTP 协议进行握手。客户端首先发送一个 HTTP 请求,请求中包含一些特殊的头部信息,表明这是一个 WebSocket 连接请求。服务器收到请求后,如果支持 WebSocket 协议,就会返回一个响应,完成握手过程。这个握手过程就像是双方在建立通信之前的一种 “打招呼” 和 “确认” 的方式。

2. 使用方式 

我们先创建一个spring项目,勾选上websocket依赖:

2.1 创建WebSocket处理器

 创建TextWebSocketHandler的子类:

重写其中的一些方法,这里我们主要介绍如下四种:

TextMessage用于存储文本,消息,getPayload()会返回消息内容

2.2 注册WebSocket处理器

实现WebSocketConfigurer接口,重写registerWebSocketHandlers()方法完成注册:

2.3 在前端页面中使用WebSocket连接服务器

 2.4 运行展示

运行后端代码访问页面:

可以看到前后端都提示了连接成功,此时我们关闭服务器:

在前后端也可以看到连接关闭的提示,我们再次启动服务器发送消息:

可以看到,发送你好后,服务器同样给客户端也发送了你好 


http://www.ppmy.cn/devtools/149705.html

相关文章

C#Halcon找线封装

利用CreateMetrologyModel封装找线工具时,在后期实际应用调试时容易把检测极性搞混乱,造成检测偏差,基于此,此Demo增加画线后检测极性的指引,首先看一下效果 加载测试图片 画线 确定后指引效果 找线效果 修改显示 UI代…

探索Java爬虫:获取淘宝App商品详情原数据API接口的实现

在当今的互联网时代,数据是最宝贵的资源之一。对于电商平台而言,商品详情数据更是重中之重。本文将带你深入了解如何使用Java爬虫获取淘宝App商品详情的原数据API接口,帮助你掌握这一技术,提升数据获取能力。 一、为什么选择Java…

深入理解 JSON 数据传递方式:数组格式与对象包装格式的对比与选择

深入理解 JSON 数据传递方式:数组格式与对象包装格式的对比与选择 深入理解 JSON 数据传递方式:数组格式与对象包装格式的对比与选择一、JSON 数组格式与对象包装格式的概述1. JSON 数组格式2. JSON 对象包装格式 二、数组格式与对象包装格式的主要区别1…

有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗

近期,有多名开发者反馈,收到来自腾讯科技 (深圳) 有限公司委托北京的一家**诚律师事务所卞,写给AppStore的投诉邮件。 邮件内容主要说的是,腾讯注册了【水印相机】这四个字的商标,所以你们这些在AppStore上的app&…

JAVA 冒泡排序算法

1.冒泡排序 冒泡排序是最基本的排序算法,通过对待排序序列从前向后依次比较相邻元素的值,如果发现逆序就进行交换,使值较大的元素从前向后移,就像水底下的气泡一样逐渐向上冒。 冒泡排序算法是重复地遍历要排序的数列&#xff0c…

每天40分玩转Django:Django Docker化学习指南

Django Docker化学习指南 1. 学习目标 理解Docker容器化的基本概念和优势掌握Django应用的Docker化过程学习使用Docker Compose管理多容器应用 2. 核心知识点 知识点重要程度掌握要求Dockerfile编写⭐⭐⭐⭐⭐熟练掌握Docker基本命令⭐⭐⭐⭐熟练掌握Docker Compose配置⭐⭐…

如何高效格式化输出 JSON 字符串

引言 JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,已经成为了各种编程语言间传递数据的标准。无论是在 Web 开发中与前端进行数据交互,还是在微服务架构中进行服务之间的通信,JSON 数据格式都有着…

C++ 实现简单多数法

以下是几种用 C 实现简单多数法的代码示例&#xff1a; 暴力遍历法 收起 cpp #include <iostream> #include <vector>char majorityElementBruteForce(const std::vector<char>& grades) {int n grades.size();for (int i 0; i < n; i) {int cou…