Websocket是一種網(wǎng)絡(luò)協(xié)議,它允許瀏覽器和服務(wù)器之間進(jìn)行實(shí)時(shí)雙向數(shù)據(jù)傳輸。
在本教程中,我們將創(chuàng)建一個(gè)簡單的聊天應(yīng)用程序,使用Websocket實(shí)現(xiàn)實(shí)時(shí)通信。
- 添加依賴
我們需要添加Spring Boot Websocket依賴,以便我們可以使用Spring Boot中提供的Websocket支持。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
- 配置WebSocket
在Spring Boot應(yīng)用程序中,我們需要配置WebSocket,以便我們可以使用它。我們可以使用@Configuration注解來配置WebSocket。
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(chatWebSocketHandler(), "/chat");
}
@Bean
public WebSocketHandler chatWebSocketHandler() {
return new ChatWebSocketHandler();
}
}
在上面的代碼中,我們使用@EnableWebSocket注解啟用WebSocket并實(shí)現(xiàn)WebSocketConfigurer接口。在registerWebSocketHandlers()方法中,我們將ChatWebSocketHandler注冊(cè)為處理程序,并將其映射到“/ chat”端點(diǎn)。
- 編寫處理程序
現(xiàn)在,我們需要編寫一個(gè)處理程序來處理WebSocket請(qǐng)求,并處理聊天消息。我們將創(chuàng)建一個(gè)名為ChatWebSocketHandler的類來處理WebSocket請(qǐng)求。
public class ChatWebSocketHandler extends TextWebSocketHandler {
private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for (WebSocketSession s : sessions) {
if (s.isOpen() && !s.equals(session)) {
s.sendMessage(message);
}
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
}
在上面的代碼中,我們實(shí)現(xiàn)了TextWebSocketHandler類,并覆蓋了afterConnectionEstablished()、handleTextMessage()和afterConnectionClosed()方法。在afterConnectionEstablished()方法中,我們將WebSocketSession添加到sessions列表中。在handleTextMessage()方法中,我們將接收到的消息廣播給所有連接的客戶端。在afterConnectionClosed()方法中,我們將WebSocketSession從sessions列表中刪除。
- 編寫客戶端代碼
我們可以使用JavaScript編寫客戶端代碼來連接WebSocket并發(fā)送消息。
var socket = new WebSocket("ws://" + window.location.host + "/chat");
socket.onopen = function() {
console.log("Connected to WebSocket server");
};
socket.onmessage = function(event) {
var message = JSON.parse(event.data);
console.log("Received message: " + message.content);
};
socket.onclose = function(event) {
console.log("Disconnected from WebSocket server");
};
function sendMessage() {
var message = document.getElementById("message").value;
socket.send(JSON.stringify({content: message}));
}
在上面的代碼中,我們創(chuàng)建了一個(gè)WebSocket對(duì)象并使用onopen、onmessage和onclose事件處理程序來處理WebSocket連接的不同狀態(tài)。我們還定義了一個(gè)sendMessage()函數(shù)來發(fā)送消息。
- 運(yùn)行應(yīng)用程序
現(xiàn)在,我們已經(jīng)完成了應(yīng)用程序的編寫和配置。可以在瀏覽器中打開應(yīng)用程序,并使用不同的標(biāo)簽頁或?yàn)g覽器窗口打開相同的應(yīng)用程序,并開始聊天。
總結(jié)文章來源:http://www.zghlxwxcb.cn/news/detail-422434.html
在本教程中,我們?cè)赟pring Boot應(yīng)用程序中使用Websocket,創(chuàng)建了一個(gè)簡單的聊天應(yīng)用程序。文章來源地址http://www.zghlxwxcb.cn/news/detail-422434.html
到了這里,關(guān)于springboot整合websocket教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!