Maison >Java >javaDidacticiel >Comment utiliser Java pour gérer la déconnexion et la reconnexion de Websocket

Comment utiliser Java pour gérer la déconnexion et la reconnexion de Websocket

WBOY
WBOYoriginal
2023-12-17 19:06:331379parcourir

Comment utiliser Java pour gérer la déconnexion et la reconnexion de Websocket

Comment utiliser Java pour gérer la déconnexion et la reconnexion de Websocket

Websocket est un protocole basé sur TCP utilisé pour établir une communication bidirectionnelle entre le client et le serveur. Dans les applications réelles, Websocket peut être déconnecté en raison d'une instabilité du réseau ou d'un redémarrage du serveur. Afin d'assurer la continuité de la communication, nous devons mettre en œuvre la fonction de déconnexion et de reconnexion sur le client.

Cet article expliquera comment utiliser Java pour gérer la déconnexion et la reconnexion de Websocket et fournira des exemples de code spécifiques.

  1. Présentation des dépendances

Tout d'abord, nous devons introduire les dépendances sur la bibliothèque Java Websocket. Dans le projet Maven, nous pouvons ajouter les dépendances suivantes dans le fichier pom. Dans cette classe, nous devons remplacer des méthodes telles que onOpen, onClose et onMessage pour gérer la logique d'établissement, de déconnexion et de réception des messages.

<dependencies>
    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.5.1</version>
    </dependency>
</dependencies>
      Créer une instance client Websocket
    Avant d'utiliser le client Websocket, nous devons créer une instance client Websocket et appeler la méthode connect pour nous connecter à la cible serveur.

    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方法中调用reconnectRéaliser le mécanisme de déconnexion et de reconnexion

      Dans le code ci-dessus, nous appelons la méthode reconnect dans la méthode onClose pour implémenter la déconnexion Reconnectez-vous. Ici, nous pouvons utiliser des tâches planifiées pour nous reconnecter régulièrement au serveur. 🎜rrreee🎜Grâce à l'exemple de code ci-dessus, nous avons implémenté le mécanisme de traitement de déconnexion et de reconnexion de Websocket en Java. Lorsque la connexion Websocket est déconnectée, elle tentera automatiquement de se reconnecter au serveur pour maintenir la continuité de la communication. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn