Rumah  >  Artikel  >  Java  >  Cara menggunakan Java untuk mengendalikan pemutusan sambungan dan penyambungan semula Websocket

Cara menggunakan Java untuk mengendalikan pemutusan sambungan dan penyambungan semula Websocket

WBOY
WBOYasal
2023-12-17 19:06:331181semak imbas

Cara menggunakan Java untuk mengendalikan pemutusan sambungan dan penyambungan semula Websocket

Cara menggunakan Java untuk mengendalikan pemotongan dan penyambungan semula Websocket

Websocket ialah protokol berasaskan TCP yang digunakan untuk mencapai komunikasi dua hala antara pelanggan dan pelayan. Dalam aplikasi sebenar, Websocket mungkin terputus kerana ketidakstabilan rangkaian atau pelayan dimulakan semula. Untuk memastikan kesinambungan komunikasi, kita perlu melaksanakan fungsi pemutusan dan penyambungan semula pada klien.

Artikel ini akan memperkenalkan cara menggunakan Java untuk mengendalikan pemutusan sambungan dan penyambungan semula soket Web, serta memberikan contoh kod khusus.

  1. Memperkenalkan dependencies

Pertama, kita perlu memperkenalkan dependencies pada perpustakaan Java Websocket. Dalam projek Maven, kita boleh menambah kebergantungan berikut dalam pom >. Dalam kelas ini, kita perlu mengatasi kaedah seperti onOpen, onClose dan onMessage untuk mengendalikan logik mewujudkan, memutuskan sambungan dan menerima mesej .

<dependencies>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.5.1</version>
    </dependency>
</dependencies>
      Buat instance klien Websocket
    Sebelum menggunakan klien Websocket, kita perlu mencipta instance klien Websocket dan memanggil kaedah connect untuk menyambung ke sasaran pelayan .

    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);
        }
    }

      WebSocketClient。在该类中,我们需要重写onOpenonCloseonMessage等方法,以处理连接建立、断开和接收消息的逻辑。
      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. 创建Websocket客户端实例

      在使用Websocket客户端之前,我们需要创建一个Websocket客户端实例,并调用connect方法连接到目标服务器。

      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();
              }
          }
      }
      1. 实现断线重连机制

      在上述代码中,我们在onClose方法中调用reconnectRealisasikan mekanisme pemotongan dan penyambungan semula

      Dalam kod di atas, kami memanggil kaedah sambung semula dalam kaedah onClose untuk melaksanakan pemotongan Sambung semula. Di sini kita boleh menggunakan tugas berjadual untuk menyambung semula ke pelayan dengan kerap. 🎜rrreee🎜Melalui contoh kod di atas, kami telah melaksanakan mekanisme pemprosesan pemutusan dan penyambungan semula Websocket di Java. Apabila sambungan Websocket diputuskan, ia secara automatik akan cuba menyambung semula ke pelayan untuk mengekalkan kesinambungan komunikasi. 🎜

Atas ialah kandungan terperinci Cara menggunakan Java untuk mengendalikan pemutusan sambungan dan penyambungan semula Websocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn