您的位置:首页 > 汽车 > 时评 > 商贸公司商标logo设计_开平网站开发_2022年五月份热点事件_cctv 13新闻频道

商贸公司商标logo设计_开平网站开发_2022年五月份热点事件_cctv 13新闻频道

2025/1/7 21:09:39 来源:https://blog.csdn.net/qq_23126581/article/details/144850893  浏览:    关键词:商贸公司商标logo设计_开平网站开发_2022年五月份热点事件_cctv 13新闻频道
商贸公司商标logo设计_开平网站开发_2022年五月份热点事件_cctv 13新闻频道

在 Spring Boot 中对接 WebSocket 是一个常见的场景,通常用于实现实时通信。以下是一个完整的 WebSocket 集成步骤,包括服务端和客户端的实现。本期做个简单的测试用例

目录

一、WebSocket 简介 

1. 什么是 WebSocket?

2. WebSocket 的特点

3. WebSocket 的工作原理

二、添加依赖 

三、创建 WebSocket 配置类

四、创建 WebSocket 处理器

五、前端测试调用

六、WebSocket 的优缺点

与 HTTP 的对比

七、WebSocket 的实现


一、WebSocket 简介 

1. 什么是 WebSocket?

WebSocket 是一种 全双工通信协议,允许客户端(如浏览器)和服务器之间建立长时间保持的双向通信连接。它于 2011 年作为 RFC 6455 标准发布,是 HTTP 的补充协议,可以在一个 TCP 连接上实现实时数据传输。

2. WebSocket 的特点

  • 全双工通信:客户端和服务器都可以随时发送消息,互相独立。
  • 长连接:连接建立后无需频繁创建和关闭,减少了通信开销。
  • 低延迟:适合实时性要求较高的场景。
  • 轻量级协议:相比 HTTP 请求,WebSocket 数据帧更小,传输更高效。

3. WebSocket 的工作原理

  • 握手阶段:WebSocket 使用 HTTP 协议的 Upgrade 头,将连接从 HTTP 升级为 WebSocket。
  • 数据传输阶段:握手成功后,客户端和服务器之间可以通过单个 TCP 连接双向发送数据。

二、添加依赖 

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>

三、创建 WebSocket 配置类

使用 @EnableWebSocket 注解开启 WebSocket 支持,并实现 WebSocketConfigurer 接口,定义 WebSocket 的端点和处理逻辑。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {// 注册 WebSocket 处理器和端点registry.addHandler(new MyWebSocketHandler(), "/ws") // "/ws" 为 WebSocket 的端点.setAllowedOrigins("*"); // 允许跨域请求}
}

四、创建 WebSocket 处理器

自定义一个 WebSocket 处理器,用来处理客户端连接、消息和关闭连接等事件。

import org.springframework.web.socket.*;
import org.springframework.web.socket.handler.TextWebSocketHandler;public class MyWebSocketHandler extends TextWebSocketHandler {@Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {// 处理客户端连接System.out.println("客户端连接成功:" + session.getId());}@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {// 接收并处理客户端消息System.out.println("接收到消息:" + message.getPayload());// 发送消息给客户端session.sendMessage(new TextMessage("服务器收到消息:" + message.getPayload()));}@Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {// 处理客户端断开连接System.out.println("客户端断开连接:" + session.getId());}
}

五、前端测试调用

<!DOCTYPE html>
<html>
<head><title>WebSocket Test</title>
</head>
<body><script>let ws = new WebSocket("ws://localhost:10186/ws");ws.onopen = function () {console.log("Connection opened");ws.send("你好呀,今天是2024-12-31号!");};ws.onmessage = function (event) {console.log("Message from server: " + event.data);};ws.onclose = function () {console.log("Connection closed");};ws.onerror = function (error) {console.error("WebSocket error: " + error);};</script>
</body>
</html>

测试结果:

后端接收:

六、WebSocket 的优缺点

  • 优点:
    • 实现实时通信,如推送消息、聊天室等。
    • 减少网络请求开销,提升性能。
    • 支持低延迟的双向数据传输。
  • 缺点:
    • 需要单独的服务器支持 WebSocket 协议。
    • 长连接可能会增加服务器的资源占用。

与 HTTP 的对比

特点HTTPWebSocket
连接方式请求-响应模式双向通信
连接状态短连接(每次请求需重建)长连接
传输效率较低高效(头部信息少)
实时性不强实时性强

七、WebSocket 的实现

客户端:HTML5 提供了内置的 WebSocket API。 示例:

const ws = new WebSocket('ws://localhost:8080/socket');
ws.onopen = () => console.log('连接成功');
ws.onmessage = (msg) => console.log('收到消息:', msg.data);
ws.onclose = () => console.log('连接关闭');

服务器端:不同语言和框架均支持 WebSocket(如 Spring Boot、Node.js、Flask 等)。

点个关注,不会迷路! 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com