Maison  >  Article  >  Java  >  Utilisation de WebSocket dans Spring Boot pour implémenter les fonctions push et de notification

Utilisation de WebSocket dans Spring Boot pour implémenter les fonctions push et de notification

PHPz
PHPzoriginal
2023-06-23 11:47:501635parcourir

Dans le développement d'applications Web modernes, WebSocket est une technologie courante pour la communication instantanée et la transmission de données en temps réel. Le framework Spring Boot prend en charge WebSocket intégré, ce qui permet aux développeurs d'implémenter très facilement des fonctions push et de notification.

Cet article expliquera comment utiliser WebSocket pour implémenter les fonctions push et de notification dans Spring Boot, et démontrera la mise en œuvre d'une simple salle de discussion en ligne en temps réel.

  1. Créer un projet Spring Boot

Tout d'abord, nous devons créer un projet Spring Boot. Vous pouvez créer rapidement un nouveau projet à l'aide des dépendances Web et WebSocket sur le site Web Spring Initializr. Le code est le suivant :

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>
</dependencies>
  1. Configuring WebSocket

Ensuite, nous devons configurer WebSocket pour qu'il puisse s'exécuter dans une application Spring Boot .

Tout d'abord, nous devons ajouter les attributs suivants au fichier de configuration de l'application :

spring.websocket.enabled=true

Ensuite, ajoutez un @EnableWebSocket dans le code de la classe de configuration Spring Boot > annotation pour activer la prise en charge de WebSocket. Dans le même temps, nous devons implémenter une interface <code>WebSocketConfigurer et y enregistrer des gestionnaires et des intercepteurs de messages pour gérer les requêtes et les messages WebSocket. @EnableWebSocket注解,启用WebSocket支持。同时,我们需要实现一个WebSocketConfigurer接口,在其中注册处理程序和消息拦截器,以便处理WebSocket请求和消息。

代码如下:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new WebSocketHandler(), "/chat").setAllowedOrigins("*").withSockJS();
    }
}

在上面的代码中,我们注册了一个处理程序(即WebSocketHandler),该处理程序在客户端连接到“/ chat”端点时被调用。使用setAllowedOrigins方法来指定允许的来源,以便进行跨域请求,使用withSockJS方法以启用SockJS支持,以便与不支持WebSocket的浏览器兼容。

  1. 编写WebSocket处理程序

现在我们需要编写处理程序类,这个类会处理所有的WebSocket请求和消息。

在Spring Boot中,这个类只需要实现WebSocketHandler接口即可。我们将使用SimpeTextWebSocketHandler类,该类提供了处理WebSocket消息的基本功能,并且我们可以在其基础上扩展自己的处理程序。

代码如下:

public class WebSocketHandler extends TextWebSocketHandler {

    private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        sessions.add(session);
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        sessions.remove(session);
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        for (WebSocketSession s : sessions) {
            if (s.isOpen() && !s.equals(session)) {
                s.sendMessage(message);
            }
        }
    }
}

在上面的代码中,afterConnectionEstablished方法在新的WebSocket会话建立时被调用,afterConnectionClosed方法在WebSocket会话关闭时被调用。handleTextMessage方法处理所有的WebSocket消息,并发送给所有当前连接的客户端。

  1. 创建WebSocket客户端

现在,我们需要创建一个WebSocket客户端来测试实现的推送和通知功能。可以使用JavaScript的WebSocket API来创建一个WebSocket客户端。

代码如下:

const socket = new WebSocket('ws://localhost:8080/chat');

socket.onopen = function() {
  console.log('连接已建立');
};

socket.onmessage = function(event) {
  console.log('收到消息:', event.data);
};

socket.onerror = function(error) {
  console.log('发生错误:', error);
};

socket.onclose = function() {
  console.log('连接已关闭');
};

在上面的代码中,我们创建了一个WebSocket实例并尝试连接到ws:// localhost:8080 / chat。然后,我们监听WebSocket事件以获取打开,关闭,错误和消息事件。

  1. 运行项目

现在,我们可以启动Spring Boot应用并测试推送和通知功能。我们可以使用两个或多个WebSocket客户端来模拟不同的用户,并在一个客户端输入消息并将其广播到所有会话中的其他客户端。

使用Maven运行spring-boot:run

Le code est le suivant :

rrreee

Dans le code ci-dessus, nous enregistrons un gestionnaire (c'est-à-dire WebSocketHandler) qui se connecte au point de terminaison "/chat" côté client est appelé quand. Utilisez la méthode setAllowedOrigins pour spécifier les origines autorisées pour les requêtes d'origine croisée, et la méthode withSockJS pour activer la prise en charge de SockJS pour la compatibilité avec les navigateurs qui ne prennent pas en charge WebSocket.
    1. Write WebSocket handler

    Maintenant, nous devons écrire une classe de gestionnaire, qui gérera toutes les requêtes et tous les messages WebSocket.

    #🎜🎜#Dans Spring Boot, cette classe n'a besoin que d'implémenter l'interface WebSocketHandler. Nous utiliserons la classe SimpeTextWebSocketHandler, qui fournit des fonctionnalités de base pour gérer les messages WebSocket, et nous pourrons étendre nos propres gestionnaires en fonction de celle-ci. #🎜🎜##🎜🎜#Le code est le suivant : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, la méthode afterConnectionEstablished est appelée lorsqu'une nouvelle session WebSocket est établie, afterConnectionClosed est appelée lorsque la session WebSocket est fermée. La méthode <code>handleTextMessage gère tous les messages WebSocket et les envoie à tous les clients actuellement connectés. #🎜🎜#
      #🎜🎜#Créer un client WebSocket #🎜🎜##🎜🎜##🎜🎜#Maintenant, nous devons créer un client WebSocket pour tester la fonctionnalité push et de notification implémentée. Vous pouvez utiliser l'API WebSocket de JavaScript pour créer un client WebSocket. #🎜🎜##🎜🎜#Le code est le suivant : #🎜🎜#rrreee#🎜🎜#Dans le code ci-dessus, nous créons une instance WebSocket et essayons de nous connecter à ws://localhost:8080/chat . Nous écoutons ensuite les événements WebSocket pour les événements d'ouverture, de fermeture, d'erreur et de message. #🎜🎜#
        #🎜🎜#Exécuter le projet #🎜🎜##🎜🎜##🎜🎜#Maintenant, nous pouvons démarrer l'application Spring Boot et tester les fonctionnalités push et de notification. Nous pouvons utiliser deux clients WebSocket ou plus pour usurper l'identité de différents utilisateurs, saisir des messages dans un client et les diffuser à d'autres clients dans toutes les sessions. #🎜🎜##🎜🎜#Utilisez Maven pour exécuter la commande spring-boot:run pour démarrer l'application. #🎜🎜##🎜🎜#Maintenant, ouvrez plusieurs fenêtres de navigateur et créez un client WebSocket dans chaque fenêtre. Entrez votre message et appuyez sur le bouton Envoyer pour transmettre le message aux autres clients WebSocket dans toutes les sessions avec lesquelles vous discutez. #🎜🎜##🎜🎜##🎜🎜#Summary#🎜🎜##🎜🎜##🎜🎜#Dans ce tutoriel, nous avons appris à utiliser Spring Boot et WebSocket pour implémenter les fonctions push et de notification. Avec la prise en charge de WebSocket, nous pouvons créer des applications en temps réel, collaboratives et multidiffusion qui améliorent l'expérience utilisateur et augmentent la valeur de l'application. #🎜🎜#

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