Java を使用して Websocket の切断と再接続を処理する方法

WBOY
リリース: 2023-12-17 19:06:33
オリジナル
1181 人が閲覧しました

Java を使用して Websocket の切断と再接続を処理する方法

Java を使用して Websocket の切断と再接続を処理する方法

Websocket は、クライアントとサーバー間の双方向通信を実現するために使用される TCP ベースのプロトコルです。実際のアプリケーションでは、ネットワークの不安定やサーバーの再起動により Websocket が切断される場合があります。通信の継続性を確保するには、クライアントに切断と再接続の機能を実装する必要があります。

この記事では、Java を使用して Websocket の切断と再接続を処理する方法を紹介し、具体的なコード例を示します。

  1. 依存関係の紹介

まず、Java Websocket ライブラリの依存関係を導入する必要があります。 Maven プロジェクトでは、pom.xml ファイルに次の依存関係を追加できます。

<dependencies>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.5.1</version>
    </dependency>
</dependencies>
ログイン後にコピー
  1. Websocket クライアント クラスの作成

次に、Websocket クライアントを作成する必要があります。 WebSocketClient から継承された終了クラス。このクラスでは、接続の確立、切断、メッセージ受信のロジックを処理するために、onOpenonCloseonMessage などのメソッドをオーバーライドする必要があります。

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;

import java.net.URI;
import java.net.URISyntaxException;

public class MyWebsocketClient extends WebSocketClient {

    public MyWebsocketClient(String serverUri) throws URISyntaxException {
        super(new URI(serverUri));
    }

    @Override
    public void onOpen(ServerHandshake handshakedata) {
        // 连接建立成功
        System.out.println("Websocket连接已建立");
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        // 连接断开
        System.out.println("Websocket连接已断开");
        // 进行断线重连
        try {
            this.reconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onMessage(String message) {
        // 接收到消息
        System.out.println("Received: " + message);
    }
}
ログイン後にコピー
  1. Websocket クライアント インスタンスの作成

Websocket クライアントを使用する前に、Websocket クライアント インスタンスを作成し、connect メソッド Connect to を呼び出す必要があります。ターゲットサーバー。

public class Main {

    public static void main(String[] args) {
        try {
            // 创建Websocket客户端实例
            MyWebsocketClient client = new MyWebsocketClient("ws://localhost:8080/websocket");

            // 连接到服务器
            client.connect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
ログイン後にコピー
  1. 切断および再接続メカニズムの実装

上記のコードでは、onClosereconnect メソッドを呼び出します。メソッドの切断と再接続を実現します。ここでは、スケジュールされたタスクを使用してサーバーに定期的に再接続できます。

import org.java_websocket.client.WebSocketClient;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.Timer;
import java.util.TimerTask;

public class MyWebsocketClient extends WebSocketClient {

    private Timer timer;
    private boolean isConnected;

    public MyWebsocketClient(String serverUri) throws URISyntaxException {
        super(new URI(serverUri));
        this.timer = new Timer();
        this.isConnected = false;
    }

    @Override
    public void onOpen(ServerHandshake handshakedata) {
        // 连接建立成功
        System.out.println("Websocket连接已建立");
        this.isConnected = true;
    }

    @Override
    public void onClose(int code, String reason, boolean remote) {
        // 连接断开
        System.out.println("Websocket连接已断开");
        this.isConnected = false;
        // 进行断线重连
        this.reconnect();
    }

    @Override
    public void onMessage(String message) {
        // 接收到消息
        System.out.println("Received: " + message);
    }

    private void reconnect() {
        if (!this.isConnected) {
            this.timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    try {
                        // 重新连接
                        MyWebsocketClient.this.reconnect();
                        // 连接到服务器
                        MyWebsocketClient.this.connect();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }, 5000);
        }
    }
}

public class Main {

    public static void main(String[] args) {
        try {
            // 创建Websocket客户端实例
            MyWebsocketClient client = new MyWebsocketClient("ws://localhost:8080/websocket");

            // 连接到服务器
            client.connect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
ログイン後にコピー

上記のコード例を通じて、Websocket の切断と再接続の処理メカニズムを Java で実装しました。 Websocket 接続が切断されると、通信の継続性を維持するためにサーバーへの再接続が自動的に試行されます。

以上がJava を使用して Websocket の切断と再接続を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!