WebSocket を使用して Java でインスタント チャット機能を実装する方法
インターネットの急速な発展に伴い、インスタント メッセージングは人々の生活に欠かせないものになりました。 WebSocket は全二重通信プロトコルとして、従来の HTTP プロトコルに徐々に取って代わり、インスタント メッセージング機能を実現するための重要な技術の 1 つとなっています。この記事では、WebSocket を使用して Java でインスタント チャット機能を実装する方法と、具体的なコード例を紹介します。
まず、次の環境とツールを準備する必要があります:
次に、インスタント チャット機能の実装を開始します。
ステップ 1: Java ベースの WebSocket サーバーを作成する
Java の Spring Boot フレームワークを使用して、WebSocket サーバーを作成します。 Spring Boot は、WebSocket の開発者向け API と便利な構成を提供します。 WebSocket サーバーを作成する前に、Spring Boot プロジェクトを作成する必要があります。
まず、IDE で新しい Spring Boot プロジェクトを作成し、次の依存関係を導入します。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> </dependencies>
次に、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(); } }
上記のコードでは、@EnableWebSocket
アノテーションを通じて WebSocket を有効にし、registerWebSocketHandlers
メソッドを通じて chatWebSocketHandler
という名前の WebSocket プロセッサを登録します。プロセッサのパスは「/chat」です。必要に応じてパスをカスタマイズできます。
ステップ 2: WebSocket プロセッサを実装する
次に、WebSocket 接続を処理および管理するために WebSocket プロセッサを実装する必要があります。このプロセッサでは、メッセージの送受信機能を実装します。
ChatWebSocketHandler という名前のクラスを作成し、WebSocketHandler
インターフェイスを実装します。このクラスでは、いくつかのメソッドをオーバーライドする必要があります。
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 webSocketSession : sessions) { webSocketSession.sendMessage(message); } } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } }
上記のコードでは、sessions
リストを使用して、接続されているすべての WebSocket セッションを管理します。 afterConnection確立
このメソッドは、接続が確立され、セッションがリストに追加された後に呼び出されます。 handleTextMessage
メソッドはメッセージの受信と処理に使用され、受信したメッセージは接続されているすべてのセッションに送信されます。 afterConnectionClosed
このメソッドは接続が閉じられた後に呼び出されるため、リストからセッションを削除する必要があります。
ステップ 3: フロントエンド ページ
最後に、ユーザーのインスタント チャット機能を実装するためのフロントエンド ページを作成する必要があります。
プロジェクトの静的フォルダーに chat.html
という名前の HTML ファイルを作成し、次のコードを追加します。
<!DOCTYPE html> <html> <head> <title>Chat</title> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> </head> <body> <div id="messages"></div> <input id="input" type="text" /> <button id="send">Send</button> <script> var socket = new WebSocket("ws://localhost:8080/chat"); socket.onmessage = function(event) { var message = event.data; $("#messages").append("<p>" + message + "</p>"); }; $("#send").click(function() { var message = $("#input").val(); socket.send(message); $("#input").val(""); }); </script> </body> </html>
上記のコードでは、 # を渡します # #WebSocket オブジェクトはサーバーとの接続を確立し、
onmessage イベントを使用して受信したメッセージを処理します。ユーザーが「送信」ボタンをクリックすると、入力ボックス内のテキストがサーバーに送信されます。
chat.html ページにアクセスし、サーバーとの WebSocket 接続を確立します。ユーザーが入力ボックスにメッセージを入力して「送信」ボタンをクリックすると、ブラウザーはメッセージをサーバーに送信します。サーバーはメッセージを受信すると、接続されているすべてのセッションにメッセージを送信します。セッションはメッセージを受信すると、それをページに表示します。
chat.html ページにアクセスしてインスタント チャット機能を実装できます。
以上がWebSocketを使用してJavaでインスタントチャット機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。