下面我会详细讲解 “Spring Boot 整合单机websocket的步骤 附github源码” 的完整攻略,并提供两个示例说明。
一、整合步骤
1. 引入依赖
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artiactId>spring-boot-starter-websocket</artifactId>
</dependency>
2. 编写 WebSocket 数据处理程序类
此类应该扩展自 Spring 的 WebSocketHandler
接口,并且要重写三个方法:
- afterConnectionEstablished(WebSocketSession session):在建立连接后调用此方法,可以向指定用户发送数据。
- handleMessage(WebSocketSession session, WebSocketMessage<?> message):WebSocketSocket 连接被打开时调用此方法。
- afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus):在断开连接后调用此方法。
@Component
public class MyHandler implements WebSocketHandler {
private final static List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
// 当连接建立后调用此方法
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
// 接收到消息后调用此方法
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
for (WebSocketSession s : sessions) {
// 广播消息
s.sendMessage(new TextMessage("广播消息: " + message.getPayload()));
}
}
// 连接关闭后调用此方法
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
sessions.remove(session);
}
}
3. 配置 WebSocket
在 Spring Boot 应用程序的 WebSocketConfig.java
类中添加以下配置:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private MyHandler myHandler;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) {
webSocketHandlerRegistry.addHandler(myHandler, "/myHandler").setAllowedOrigins("*");
}
}
@Configuration
:标识该类为配置类。@EnableWebSocket
:启用 WebSocket 功能。MyHandler
:自定义的 WebSocket 数据处理程序。"/myHandler"
:WebSocket 的访问路径。setAllowedOrigins("*")
:设置 WebSocket 的跨域访问。
4. 在Web页面中使用WebSocket
要使用 WebSocket,需要在Web页面中添加以下 JavaScript 代码:
var ws = new WebSocket("ws://localhost:8080/myHandler");
ws.onopen = function() {
console.log("WebSocket已连接");
}
ws.onmessage = function(event) {
console.log("接收到消息: " + event.data);
}
ws.onclose = function() {
console.log("WebSocket已关闭");
}
document.getElementById("sendButton").addEventListener("click", function() {
var inputText = document.getElementById("inputText").value;
ws.send(inputText);
});
其中,ws
是一个 WebSocket 实例,其 onopen
,onmessage
,onclose
函数会在 WebSocket 连接建立、接收到消息以及连接关闭时被调用。最后一个 JavaScript 代码为检测文本框中的输入并将其发送到服务器端。
二、附加示例代码说明
示例一:简单聊天室
项目地址:https://github.com/ytwxsb/simple-chatroom
这是一个简单的 WebSocket 实例,能够实现简单的聊天室功能,可以在多个浏览器中进行群聊。具体的代码可以查看上面给出的 Github 源码。
示例二:实时推送天气信息
项目地址:https://github.com/ytwxsb/weather-websocket-demo
这个示例可以实时推送指定城市的天气信息,使用了第三方天气 API,通过 WebSocket 推送到前端页面进行展示。具体的代码可以查看上面给出的 Github 源码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 整合单机websocket的步骤 附github源码 - Python技术站