当前位置: 首页 > news >正文

springBoot快速搭建WebSocket

  1. 添加依赖
    在pom.xml中加入WebSocket相关依赖:
<dependencies><!-- websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><!-- websocket -->
</dependencies>
  1. 创建SocketHandler(我们socket的消息类型有两种:TextMessage 类型用于处理文本帧, BinaryMessage 类型用于处理二进制帧)
    创建MyWebSocketHandler处理文本帧
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;@Component
public class MyWebSocketHandler extends TextWebSocketHandler {@Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {String payload = message.getPayload();//接收到的消息System.out.println("Received: " + payload);session.sendMessage(new TextMessage(payload));}
}

创建MyBinaryWebSocketHandler处理二进制帧

import org.springframework.stereotype.Component;
import org.springframework.web.socket.BinaryMessage;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.BinaryWebSocketHandler;import java.nio.ByteBuffer;@Component
public class MyBinaryWebSocketHandler extends BinaryWebSocketHandler {@Overridepublic void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {// 从BinaryMessage中获取二进制数据ByteBuffer byteBuffer = message.getPayload();// 这里可以处理接收到的二进制数据while (byteBuffer.hasRemaining()) {byte b = byteBuffer.get();// 处理每一个字节System.out.println("Received byte: " + b);}//发送二进制响应//session.sendMessage(new BinaryMessage(byteBuffer));//或发送文本响应session.sendMessage(new TextMessage("111111"));}
}
  1. 创建WebSocketConfig
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 {private final MyWebSocketHandler myWebSocketHandler;private final MyBinaryWebSocketHandler myBinaryWebSocketHandler;public WebSocketConfig(MyWebSocketHandler myWebSocketHandler, MyBinaryWebSocketHandler myBinaryWebSocketHandler) {this.myWebSocketHandler = myWebSocketHandler;this.myBinaryWebSocketHandler = myBinaryWebSocketHandler;}@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(myWebSocketHandler, "/TextMessage").setAllowedOrigins("*");//接收/TextMessage结尾的文本消息registry.addHandler(myBinaryWebSocketHandler, "/BinaryMessage").setAllowedOrigins("*");//接收/BinaryMessage结尾的二进制帧消息}
}
  1. 创建前端页面index.html 文件,包含一个简单的 WebSocket 客户端
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>WebSocket Demo</title>
</head>
<body><h1>WebSocket Demo</h1><button onclick="connect()">Connect</button><button onclick="disconnect()">Disconnect</button><br><input type="text" id="message" placeholder="Enter message"><button onclick="sendMessage()">Send</button><ul id="messages"></ul><script>var webSocket;function connect() {webSocket = new WebSocket('ws://localhost:8080/TextMessage');webSocket.onmessage = function(event) {var messages = document.getElementById('messages');var message = document.createElement('li');message.textContent = event.data;messages.appendChild(message);};webSocket.onopen = function(event) {console.log('Connected to WebSocket');};webSocket.onclose = function(event) {console.log('Disconnected from WebSocket');};}function disconnect() {if (webSocket) {webSocket.close();}}function sendMessage() {var messageInput = document.getElementById('message');var message = messageInput.value;webSocket.send(message);messageInput.value = '';}</script>
</body>
</html>
  1. 运行应用程序
    运行 Spring Boot 应用程序,然后浏览器打开 index.html。你应该会看到一个简单的 WebSocket 客户端界面。
    点击 “Connect” 按钮连接到 WebSocket 服务器,输入消息并点击 “Send” 按钮发送消息。你应该会在页面上看到服务器返回的 “Echo” 消息。
http://www.lryc.cn/news/410871.html

相关文章:

  • 掌控授权的艺术:Laravel自定义策略模式深度解析
  • Git操作指令(随时更新)
  • SpringSecurity自定义登录方式
  • 黑神话悟空是什么游戏 黑神话悟空配置要求 黑神话悟空好玩吗值得买吗 黑神话悟空苹果电脑可以玩吗
  • 深入浅出消息队列----【延迟消息的实现原理】
  • npm提示 certificate has expired 证书已过期 已解决
  • KEIL如何封装文件成lib
  • 【python】OpenCV—Faster Video File FPS
  • JavaScript变量的类型转换
  • 如何申请免费SSL证书以消除访问网站显示连接不安全提醒
  • 关于P2P(点对点)
  • 前端怎么本地起一个服务查看本地文件
  • 建造者模式(Builder Pattern)
  • 【MySQL】索引 【下】{聚簇索引VS非聚簇索引/创建主键索引/全文索引的创建/索引创建原则}
  • 论文快过(图像配准|Coarse_LoFTR_TRT)|适用于移动端的LoFTR算法的改进分析 1060显卡上45fps
  • 免费发送邮件两种接口方式:SMTP和邮件API
  • 大模型日报 2024-07-30
  • docker 构建 mongodb
  • LeetCode每日练习 | 二分查找 | 数组 |Java | 图解算法
  • 2024年获客新渠道,大数据爬虫获客:技术实现精准抓取数据资源
  • 滑模变结构控制仿真实例(s-function代码详解)
  • MySQL处理引擎
  • HTTP 方法详解:GET、POST 和 PUT
  • 被工信部认可的开源软件治理解决方案
  • 文件包含漏洞--pyload
  • C++包管理之`vcpkg`简介
  • 【机器学习】必会核函数之:高斯核函数
  • 51单片机和STM32区别
  • Python 伪随机数生成器
  • 7.5 grafana上导入模板看图并讲解告警