WebSocket は HTML5 によって導入された新しいプロトコルで、クライアントとサーバー間の長い接続を確立するために使用されます。 HTTP と同様に、標準の Web ポートで実行でき、ファイアウォールやプロキシ サーバーを通過することもでき、リアルタイム通信やプッシュ通知などのシナリオで広く使用されています。
Java は強力なプログラミング言語として、さまざまな WebSocket 関連の API とライブラリも提供しています。この記事では、Java を使用して WebSocket アプリケーションを開発する方法を紹介し、具体的なコード例を示します。
1. WebSocket API の概要
Java EE 7 は、WebSocket のクライアント側およびサーバー側のインターフェイスを含む、WebSocket 用の JSR-356 Java API を提供します。 Java EE 7 コンテナ (GlassFish、Tomcat など) またはサードパーティ ライブラリ (Jetty、Tyrus など) を使用して WebSocket 機能を実装できます。
Java WebSocket API のコア インターフェイスとクラスは次のとおりです。
WebSocket アプリケーションは Java WebSocket API を利用して簡単に実装できますので、次に具体的な例を紹介します。
2. WebSocket アプリケーションの例
この記事では、次の側面から WebSocket アプリケーションの実装を紹介します:
2.1 サーバー側の WebSocket エンドポイントの実装
サーバー側に WebSocket アプリケーションを実装するには、WebSocket エンドポイントを作成する必要があります。単純なエンドポイント コードは次のとおりです。
import javax.websocket.OnMessage; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.io.IOException; @ServerEndpoint(value = "/chat") public class ChatEndpoint { @OnMessage public void onMessage(Session session, String message) throws IOException { // 处理收到的消息 session.getBasicRemote().sendText("You said: " + message); } }
@ServerEndpoint アノテーションを使用してエンドポイントの URI パスを指定します。ここでは「/chat」です。エンドポイントでは、クライアントから送信されたメッセージを受信して処理するために @OnMessage アノテーションが実装されています。このメソッドでは、受信したメッセージを処理し、クライアントに応答メッセージを送信できます。
2.2 クライアント WebSocket の実装
クライアントは、javax.websocket クライアント API を使用して、Java 経由で WebSocket を実装できます。簡単な Java WebSocket クライアントの例を以下に示します。クライアント コードでは、 @ClientEndpoint アノテーションを使用してクライアントの WebSocket エンドポイントをマークします。 main メソッドでは、WebSocketContainer を使用してサーバー側に接続し、5 つのメッセージを送信します。サーバー側の応答を受信した後、処理のために onMessage メソッドが呼び出され、CountDownLatch を使用してプログラムの同期待機が実装されます。
2.3 サーバー側のブロードキャスト メッセージの実装
WebSocket アプリケーションでは、サーバーがすべてのクライアントにメッセージをブロードキャストする必要がある場合があります。簡単な例を次に示します。
import javax.websocket.ClientEndpoint; import javax.websocket.OnMessage; import javax.websocket.Session; import java.net.URI; import java.net.URISyntaxException; import java.util.concurrent.CountDownLatch; @ClientEndpoint public class ChatClientEndpoint { private CountDownLatch latch; public ChatClientEndpoint(CountDownLatch latch) { this.latch = latch; } @OnMessage public void onMessage(Session session, String message) { System.out.println("Received message: " + message); latch.countDown(); } public static void main(String[] args) throws Exception { final int messageCount = 5; final CountDownLatch latch = new CountDownLatch(messageCount); URI uri = new URI("ws://localhost:8080/chat"); ChatClientEndpoint client = new ChatClientEndpoint(latch); WebSocketContainer container = ContainerProvider.getWebSocketContainer(); container.connectToServer(client, uri); for (int i = 0; i < messageCount; i++) { String message = "Hello " + i; client.sendMessage(message); System.out.println("Sent message: " + message); } latch.await(); container.close(); } public void sendMessage(String message) { try { session.getBasicRemote().sendText(message); } catch (IOException e) { e.printStackTrace(); } } }
このコードでは、すべての WebSocket セッションのリストを維持し、@OnOpen メソッドで新しいセッションを追加し、@OnClose メソッドでセッションを削除します。同時に、ブロードキャスト メッセージがブロードキャスト メソッドですべての WebSocket セッションに送信されます。
3. 概要
WebSocket は、プログラムがリアルタイム通信とリアルタイム プッシュ機能を確立できるようにする非常に強力な新しいプロトコルです。 Java は、WebSocket 用の豊富な API およびライブラリのサポートも提供します。この記事では、Java を使用して WebSocket アプリケーションを開発する方法を説明し、具体的なコード例を示します。この記事が Java での WebSocket アプリケーションの開発に役立つことを願っています。
以上がJava を使用して Websocket アプリケーションを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。