springboot實(shí)現(xiàn)簡單的消息對話的示例代碼
一、前言
要在Spring Boot項(xiàng)目中實(shí)現(xiàn)消息對話,你可以使用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配置類 接下來,創(chuàng)建一個(gè)配置類來配置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處理程序類來處理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)建前端頁面 接下來,您需要編寫一個(gè)前端頁面來與WebSocket進(jìn)行通信。您可以使用JavaScript和HTML來實(shí)現(xiàn)此功能。以下是一個(gè)簡單的示例:
<!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); // 在頁面上顯示收到的消息 $("#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è)簡單的聊天界面,用戶可以在輸入框中輸入消息,并通過點(diǎn)擊“發(fā)送”按鈕將其發(fā)送給服務(wù)器。服務(wù)器將收到的消息廣播給所有連接的客戶端。
到此這篇關(guān)于springboot實(shí)現(xiàn)簡單的消息對話的示例代碼的文章就介紹到這了,更多相關(guān)springboot 消息對話內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot導(dǎo)出Excel表格到指定路徑的代碼詳解
Spring Boot導(dǎo)出Excel通常涉及到使用第三方庫如Apache POI或者XlsxWriter等,它們能幫助你在Spring應(yīng)用中生成并下載Excel文件,那么SpringBoot如何導(dǎo)出Excel表格到指定路徑,本文將給大家詳細(xì)的介紹一下2024-07-07Java調(diào)用C++程序的實(shí)現(xiàn)方式
這篇文章主要介紹了Java調(diào)用C++程序的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02關(guān)于@Scheduled注解的任務(wù)為什么不執(zhí)行的問題
這篇文章主要介紹了關(guān)于@Scheduled注解的任務(wù)為什么不執(zhí)行的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09深入淺析Java中Static Class及靜態(tài)內(nèi)部類和非靜態(tài)內(nèi)部類的不同
上次有朋友問我,java中的類可以是static嗎?我給他肯定的回答是可以的,在java中我們可以有靜態(tài)實(shí)例變量、靜態(tài)方法、靜態(tài)塊。當(dāng)然類也可以是靜態(tài)的,下面小編整理了些關(guān)于java中的static class相關(guān)資料分享在腳本之家平臺供大家參考2015-11-11Spring中基于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è)通知,再通過切入點(diǎn)表達(dá)式定位到橫切點(diǎn)就可以了,需要的朋友可以參考下2023-09-09CompletableFuture創(chuàng)建及功能使用全面詳解
這篇文章主要為大家介紹了CompletableFuture創(chuàng)建及功能使用全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07