ホームページ > Java > &#&チュートリアル > Java API開発におけるリアルタイム通信のためのWebSocket APIの使用

Java API開発におけるリアルタイム通信のためのWebSocket APIの使用

PHPz
リリース: 2023-06-18 09:00:14
オリジナル
1159 人が閲覧しました

インターネット技術の継続的な発展に伴い、リアルタイム通信は多くのアプリケーション システムにとって不可欠な部分となっています。 Web アプリケーションの分野では、WebSocket テクノロジがリアルタイム通信の主要な手段の 1 つになりました。 Java プラットフォームでは、Java API は WebSocket 開発を容易にする一連の WebSocket API も提供します。

この記事では、Java API 開発におけるリアルタイム通信に WebSocket API を使用する方法に焦点を当てます。WebSocket 通信の実装プロセスでは、次の側面で説明します。 ## WebSocket プロトコルの概要

    WebSocket API の基本的な使用法
  1. WebSocket API スレッド モデル
  2. WebSocket API の高度な使用シナリオ
  3. 1. WebSocket プロトコルの概要
WebSocket プロトコルは、ブラウザとサーバー間の全二重通信を実装する HTML5 の新しいプロトコルです。 WebSocket プロトコルが登場する前は、ブラウザとサーバー間の通信は HTTP プロトコルに基づいていました。HTTP プロトコルは半二重通信、つまり一方向でのみ通信でき、サーバーはアクティブに通信できませんでした。クライアントにメッセージを送信します。 WebSocket プロトコルにより、サーバーとクライアント間の真の双方向通信が可能になります。

WebSocket プロトコルの重要な特徴は、TCP プロトコルに基づいていることです。 WebSocket 接続を確立するとき、クライアントとサーバーは最初に TCP ハンドシェイクを実行し、次に WebSocket プロトコル データを HTTP プロトコル データ フレームにカプセル化して双方向通信を実現します。

2. WebSocket API の基本的な使用方法

Java API の WebSocket API は、一連の WebSocket 標準 API インターフェイスと関連クラス ライブラリを提供する javax.websocket パッケージに含まれています。 WebSocket 通信のさまざまな操作を実装するために使用されます。

WebSocket API の基本的な使用プロセスは次のとおりです。

WebSocket サーバーの作成

  1. WebSocket を使用するサーバー エンドポイントを定義する必要があります。接続を確立し、メッセージを送受信できます。このエンドポイントは、javax.websocket.Endpoint クラスを継承し、onOpen、onClose、onMessage、onError などの主要なメソッドを実装する必要があります。

WebSocket クライアントの作成

  1. WebSocket サーバーのアドレスを指定し、WebSocket クライアント オブジェクトを使用してサーバーに接続する必要があります。

メッセージの送信

  1. WebSocket 通信はメッセージに基づいており、javax.websocket.Session インターフェイスが提供する send メソッドを使用してメッセージを送信できます。

メッセージの受信

  1. メッセージ受信のロジックはサーバーとクライアントの両方に実装する必要があります。onMessage メソッドをオーバーライドして、対応するロジックを実装できます。
次に、WebSocket API の使用例を示します。

サーバー側コード:

@ServerEndpoint("/server")
public class WebSocketServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket opened: " + session.getId());
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("WebSocket closed: " + session.getId());
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("WebSocket received message: " + message);
        try {
            session.getBasicRemote().sendText("Server received message: " + message);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        System.out.println("WebSocket error: " + throwable.getMessage());
    }
}
ログイン後にコピー

クライアント側コード:

URI uri = new URI("ws://localhost:8080/server");

WebSocketContainer container = ContainerProvider.getWebSocketContainer();
Session session = container.connectToServer(MyClient.class, uri);

session.getBasicRemote().sendText("Hello Server!");
ログイン後にコピー

注:クライアントの MyClient .class は javax.websocket.ClientEndpoint インターフェースを実装し、onMessage メソッドをオーバーライドする必要があります。

3. WebSocket API スレッド モデル

WebSocket API のスレッド モデルは非常に特殊です。 WebSocket 通信は Web コンテナ (Tomcat、Jetty など) 上に構築されるため、WebSocket API のスレッド モデルも Web コンテナのスレッド モデルに依存します。 WebSocket は Web コンテナ内にいくつかの固定スレッド プールを作成するため、スレッドの安全性の問題には特別な注意を払う必要があります。

WebSocket API には、@OnOpen と @OnClose という 2 つのアノテーションが用意されており、WebSocket 接続の確立および切断時に関連する論理操作を実行するために使用できます。これら 2 つのコールバック メソッドでは、データベース操作やその他の時間のかかる操作が必要な場合は、接続をすぐに解放する必要があります。そうしないと、Web コンテナーのパフォーマンスに影響が出る可能性があります。

4. WebSocket API の高度な使用シナリオ

上記の基本的な使用シナリオに加えて、WebSocket API は、アノテーションを使用したエンドポイントの書き込みやインターセプターを使用したエンドポイントの書き込みなど、いくつかの高度な使用シナリオも提供します。エンドポイント、プログラムによるエンドポイントの作成など。

紙面の都合上、この記事ではこうした高度な利用シーンを詳しく紹介することはできませんが、公式ドキュメントと合わせて学習していただければと思います。

概要

この記事では、WebSocket プロトコルの概要、WebSocket API の基本的な使用法、スレッド化など、Java API 開発におけるリアルタイム通信に WebSocket API を使用する方法を主に紹介します。 WebSocket API のモデルと WebSocket API の高度な使用シナリオ。この記事を読むことで、読者は WebSocket API のプログラミングの考え方と実装方法を予備的に理解し、リアルタイム通信の開発ニーズにうまく対処できるようになります。

以上がJava API開発におけるリアルタイム通信のためのWebSocket APIの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート