Maison  >  Article  >  Java  >  Introduction au développement Java Websocket : comment mettre en œuvre rapidement une communication bidirectionnelle

Introduction au développement Java Websocket : comment mettre en œuvre rapidement une communication bidirectionnelle

WBOY
WBOYoriginal
2023-12-02 12:02:231414parcourir

Java Websocket开发入门:如何快速实现双向通信

Démarrer avec le développement de Websocket Java : comment implémenter rapidement une communication bidirectionnelle

Introduction :
Avec le développement continu de la technologie Internet, la communication bidirectionnelle en temps réel devient de plus en plus importante pour les applications Web modernes . En tant que protocole de communication basé sur HTML5, Websocket nous offre un moyen de mettre en œuvre rapidement une communication bidirectionnelle. Cet article explique comment utiliser Java pour le développement de Websocket et fournit des exemples de code spécifiques.

1. Qu'est-ce que Websocket ? Websocket est un protocole de communication bidirectionnelle entre le client et le serveur. Il permet au serveur de transmettre activement des données au client via un canal de communication qui maintient une connexion à long terme, et le client peut également envoyer des messages au serveur. Par rapport au protocole HTTP traditionnel, Websocket peut atteindre une latence plus faible et des performances en temps réel plus élevées.

2. Développement Websocket en Java

En Java, nous pouvons utiliser certains frameworks matures pour implémenter rapidement le développement Websocket. Ce qui suit est une introduction utilisant le framework Tyrus implémenté en Java comme exemple.

    Présentation des dépendances
  1. Tout d'abord, nous devons introduire les dépendances du framework Tyrus dans le pom du projet. Voici un exemple simple :
  2. <dependency>
        <groupId>org.glassfish.tyrus</groupId>
        <artifactId>tyrus-server</artifactId>
        <version>1.13</version>
    </dependency>
Parmi eux, MyEndpoint est notre classe Endpoint personnalisée, utilisée pour gérer les connexions Websocket, les messages et les événements de fermeture.
    1. Write Endpoint class
      Nous devons écrire une classe Endpoint pour gérer la logique de Websocket. Voici un exemple simple :
    import org.glassfish.tyrus.server.Server;
    
    public class WebsocketServer {
        public static void main(String[] args) {
            Server server = new Server("localhost", 8080, "/websocket", MyEndpoint.class);
    
            try {
                server.start();
                System.out.println("Websocket server started.");
                Thread.currentThread().join();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                server.stop();
            }
        }
    }

    Dans cet exemple, l'annotation @ServerEndpoint("/websocket") est utilisée pour spécifier le chemin du Websocket, @OnOpen et @OnClose est utilisée pour gérer respectivement l'établissement de connexion et les événements de fermeture, et l'annotation @OnMessage est utilisée pour gérer les messages envoyés par le client. MyEndpoint是我们自定义的Endpoint类,用来处理Websocket的连接、消息和关闭事件。

    1. 编写Endpoint类
      我们需要编写一个Endpoint类来处理Websocket的逻辑。下面是一个简单的示例:
    import javax.websocket.*;
    import javax.websocket.server.ServerEndpoint;
    
    @ServerEndpoint("/websocket")
    public class MyEndpoint {
        @OnOpen
        public void onOpen(Session session) {
            System.out.println("New connection opened: " + session.getId());
        }
    
        @OnMessage
        public void onMessage(String message, Session session) {
            System.out.println("Received message: " + message);
            session.getAsyncRemote().sendText("Server received your message: " + message);
        }
    
        @OnClose
        public void onClose(Session session, CloseReason closeReason) {
            System.out.println("Connection closed: " + session.getId() + " (" + closeReason.getReasonPhrase() + ")");
        }
    }

    在这个示例中,@ServerEndpoint("/websocket")注解用来指定Websocket的路径,@OnOpen@OnClose注解分别用来处理连接建立和关闭事件,@OnMessage注解用来处理客户端发送的消息。

    1. 编写Client端代码
      最后,我们需要编写一个Client端的代码来连接并与Server进行通信。下面是一个简单的示例:
    import javax.websocket.*;
    
    public class WebsocketClient {
        public static void main(String[] args) {
            WebSocketContainer container = ContainerProvider.getWebSocketContainer();
            String uri = "ws://localhost:8080/websocket";
    
            try {
                Session session = container.connectToServer(MyClientEndpoint.class, URI.create(uri));
                session.getBasicRemote().sendText("Hello, Server!");
                session.getBasicRemote().sendText("How are you doing?");
                session.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    其中,MyClientEndpoint

      Écrire le code client

      Enfin, nous devons écrire un code client pour nous connecter et communiquer avec le serveur. Voici un exemple simple :

      rrreee

      Parmi eux, MyClientEndpoint est notre classe Endpoint personnalisée, utilisée pour gérer les connexions et les messages côté client.

      🎜Résumé : 🎜Grâce aux étapes ci-dessus, nous pouvons réaliser rapidement le développement de Java Websocket et parvenir à une communication bidirectionnelle. Websocket fournit non seulement une méthode de communication en temps réel pour les applications Web, mais est également largement utilisé dans des scénarios tels que le chat en temps réel, les jeux en temps réel et l'affichage de données en temps réel. 🎜🎜Cet article présente le processus de base du développement de Java Websocket à l'aide du framework Tyrus et donne des exemples de code spécifiques. Nous espérons que les lecteurs pourront comprendre les concepts de base et les méthodes de développement de Websocket à travers cet article et les aider à établir une communication bidirectionnelle en temps réel dans leurs propres projets. 🎜

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