現在の Web アプリケーション開発では、WebSocket は即時通信とリアルタイム データ送信のための一般的なテクノロジです。 Spring Boot フレームワークは統合 WebSocket のサポートを提供しており、開発者がプッシュ機能や通知機能を実装するのに非常に便利です。
この記事では、WebSocket を使用して Spring Boot にプッシュ機能と通知機能を実装する方法を紹介し、シンプルなリアルタイム オンライン チャット ルームの実装を示します。
まず、Spring Boot プロジェクトを作成する必要があります。 Spring Initializr Web サイト上の Web および WebSocket の依存関係を使用して、新しいプロジェクトをすばやく作成できます。コードは次のとおりです。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies>
次に、Spring Boot アプリケーションで実行できるように WebSocket を構成する必要があります。
まず、次の属性をアプリケーション構成ファイルに追加する必要があります:
spring.websocket.enabled=true
次に、@EnableWebSocket
アノテーションを Spring Boot 構成クラスに追加して、WebSocket を有効にします。サポート。同時に、WebSocketConfigurer
インターフェイスを実装し、WebSocket リクエストとメッセージを処理するためにハンドラーとメッセージ インターセプターをそのインターフェイスに登録する必要があります。
コードは次のとおりです:
@Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new WebSocketHandler(), "/chat").setAllowedOrigins("*").withSockJS(); } }
上記のコードでは、クライアントが「/chat」エンドポイントに接続するときに呼び出されるハンドラー (WebSocketHandler) を登録しました。 setAllowedOrigins
メソッドを使用してクロスオリジン リクエストに許可されるオリジンを指定し、withSockJS
メソッドを使用して WebSocket をサポートしないブラウザとの互換性のために SockJS サポートを有効にします。
次に、すべての WebSocket リクエストとメッセージを処理するハンドラー クラスを作成する必要があります。
Spring Boot では、このクラスは WebSocketHandler
インターフェイスを実装するだけで済みます。 WebSocket メッセージを処理するための基本機能を提供する SimpeTextWebSocketHandler
クラスを使用します。これに基づいて独自のハンドラーを拡張できます。
コードは次のとおりです:
public class WebSocketHandler extends TextWebSocketHandler { private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession s : sessions) { if (s.isOpen() && !s.equals(session)) { s.sendMessage(message); } } } }
上記のコードでは、新しい WebSocket セッションが確立されたときに afterConnection確立
メソッドが呼び出され、afterConnectionClosed
メソッドは、新しい WebSocket セッションが確立されたときに呼び出され、セッションが閉じられたときに呼び出されます。 handleTextMessage
メソッドは、すべての WebSocket メッセージを処理し、現在接続されているすべてのクライアントに送信します。
次に、実装されたプッシュおよび通知機能をテストするために WebSocket クライアントを作成する必要があります。 JavaScript の WebSocket API を使用して WebSocket クライアントを作成できます。
コードは次のとおりです:
const socket = new WebSocket('ws://localhost:8080/chat'); socket.onopen = function() { console.log('连接已建立'); }; socket.onmessage = function(event) { console.log('收到消息:', event.data); }; socket.onerror = function(error) { console.log('发生错误:', error); }; socket.onclose = function() { console.log('连接已关闭'); };
上記のコードでは、WebSocket インスタンスを作成し、ws://localhost:8080/chat
への接続を試みます。次に、WebSocket イベントのオープン、クローズ、エラー、メッセージ イベントをリッスンします。
これで、Spring Boot アプリケーションを開始して、プッシュ機能と通知機能をテストできます。 2 つ以上の WebSocket クライアントを使用して、異なるユーザーになりすまし、1 つのクライアントにメッセージを入力し、すべてのセッションで他のクライアントにメッセージをブロードキャストできます。
Maven を使用して spring-boot:run
コマンドを実行し、アプリケーションを起動します。
次に、複数のブラウザ ウィンドウを開き、各ウィンドウで WebSocket クライアントを作成します。メッセージを入力して送信ボタンを押すと、チャットしているすべてのセッションの他の WebSocket クライアントにメッセージがプッシュされます。
このチュートリアルでは、Spring Boot と WebSocket を使用してプッシュ機能と通知機能を実装する方法を学習しました。 WebSocket のサポートにより、ユーザー エクスペリエンスを向上させ、アプリケーションの価値を高めるリアルタイムの共同作業およびマルチキャスト アプリケーションを作成できます。
以上がSpring Boot で WebSocket を使用してプッシュおよび通知機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。