springboot實(shí)現(xiàn)簡(jiǎn)單的消息對(duì)話的示例代碼
一、前言
要在Spring Boot項(xiàng)目中實(shí)現(xiàn)消息對(duì)話,你可以使用WebSocket技術(shù)。WebSocket是一種在客戶端和服務(wù)器之間提供實(shí)時(shí)雙向通信的協(xié)議。
二、實(shí)戰(zhàn)步驟
步驟 1:
添加依賴 首先,在您的Spring Boot項(xiàng)目的pom.xml文件中添加以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>步驟 2:
創(chuàng)建WebSocket配置類 接下來(lái),創(chuàng)建一個(gè)配置類來(lái)配置WebSocket相關(guān)的組件。例如,創(chuàng)建一個(gè)名為WebSocketConfig的類,并添加以下代碼:
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(chatWebSocketHandler(), "/chat").setAllowedOrigins("*");
}
@Bean
public WebSocketHandler chatWebSocketHandler() {
return new ChatWebSocketHandler();
}
}步驟 3:
創(chuàng)建WebSocket處理程序類 然后,創(chuàng)建一個(gè)WebSocket處理程序類來(lái)處理WebSocket連接和消息。例如,創(chuàng)建一個(gè)名為ChatWebSocketHandler的類,并添加以下代碼:
@Component
public class ChatWebSocketHandler extends TextWebSocketHandler {
private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
for (WebSocketSession client : sessions) {
if (client.isOpen()) {
client.sendMessage(message);
}
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
}步驟 4:
創(chuàng)建前端頁(yè)面 接下來(lái),您需要編寫一個(gè)前端頁(yè)面來(lái)與WebSocket進(jìn)行通信。您可以使用JavaScript和HTML來(lái)實(shí)現(xiàn)此功能。以下是一個(gè)簡(jiǎn)單的示例:
<!DOCTYPE html>
<html>
<head>
<title>Chat</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
var socket = new WebSocket("ws://localhost:8080/chat");
socket.onopen = function() {
console.log("Connected to WebSocket");
};
socket.onmessage = function(event) {
var message = event.data;
console.log("Received message: " + message);
// 在頁(yè)面上顯示收到的消息
$("#messages").append("<p>" + message + "</p>");
};
function sendMessage() {
var message = $("#message").val();
socket.send(message);
}
</script>
</head>
<body>
<input type="text" id="message" placeholder="Enter a message">
<button onclick="sendMessage()">Send</button>
<div id="messages"></div>
</body>
</html>這是一個(gè)簡(jiǎn)單的聊天界面,用戶可以在輸入框中輸入消息,并通過(guò)點(diǎn)擊“發(fā)送”按鈕將其發(fā)送給服務(wù)器。服務(wù)器將收到的消息廣播給所有連接的客戶端。
到此這篇關(guān)于springboot實(shí)現(xiàn)簡(jiǎn)單的消息對(duì)話的示例代碼的文章就介紹到這了,更多相關(guān)springboot 消息對(duì)話內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot導(dǎo)出Excel表格到指定路徑的代碼詳解
Spring Boot導(dǎo)出Excel通常涉及到使用第三方庫(kù)如Apache POI或者XlsxWriter等,它們能幫助你在Spring應(yīng)用中生成并下載Excel文件,那么SpringBoot如何導(dǎo)出Excel表格到指定路徑,本文將給大家詳細(xì)的介紹一下2024-07-07
Java調(diào)用C++程序的實(shí)現(xiàn)方式
這篇文章主要介紹了Java調(diào)用C++程序的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
關(guān)于@Scheduled注解的任務(wù)為什么不執(zhí)行的問(wèn)題
這篇文章主要介紹了關(guān)于@Scheduled注解的任務(wù)為什么不執(zhí)行的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
深入淺析Java中Static Class及靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類的不同
上次有朋友問(wèn)我,java中的類可以是static嗎?我給他肯定的回答是可以的,在java中我們可以有靜態(tài)實(shí)例變量、靜態(tài)方法、靜態(tài)塊。當(dāng)然類也可以是靜態(tài)的,下面小編整理了些關(guān)于java中的static class相關(guān)資料分享在腳本之家平臺(tái)供大家參考2015-11-11
Spring中基于xml的AOP實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring中基于xml的AOP實(shí)現(xiàn)詳解,基于xml與基于注解的AOP本質(zhì)上是非常相似的,都是需要封裝橫切關(guān)注點(diǎn),封裝到切面中,然后把橫切關(guān)注點(diǎn)封裝為一個(gè)方法,再把該方法設(shè)置為當(dāng)前的一個(gè)通知,再通過(guò)切入點(diǎn)表達(dá)式定位到橫切點(diǎn)就可以了,需要的朋友可以參考下2023-09-09
CompletableFuture創(chuàng)建及功能使用全面詳解
這篇文章主要為大家介紹了CompletableFuture創(chuàng)建及功能使用全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

