ホームページ  >  記事  >  Java  >  Java を使用して Websocket アプリケーションを開発する方法

Java を使用して Websocket アプリケーションを開発する方法

PHPz
PHPzオリジナル
2023-12-02 09:54:371323ブラウズ

Java を使用して Websocket アプリケーションを開発する方法

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 のコア インターフェイスとクラスは次のとおりです。

  • Session: メッセージを送受信できる WebSocket 接続セッションを表します。
  • エンドポイント: WebSocket のエンドポイントを表し、接続、メッセージ送信、エラー処理などを含む WebSocket のコア ロジックを実装します。
  • MessageHandler: さまざまなタイプのメッセージを受信して​​処理するために使用される、WebSocket のメッセージ ハンドラーを表します。

WebSocket アプリケーションは Java WebSocket API を利用して簡単に実装できますので、次に具体的な例を紹介します。

2. WebSocket アプリケーションの例

この記事では、次の側面から WebSocket アプリケーションの実装を紹介します:

  • サーバー側の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。