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.
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>
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的浏览器兼容。
现在我们需要编写处理程序类,这个类会处理所有的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消息,并发送给所有当前连接的客户端。
现在,我们需要创建一个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事件以获取打开,关闭,错误和消息事件。
现在,我们可以启动Spring Boot应用并测试推送和通知功能。我们可以使用两个或多个WebSocket客户端来模拟不同的用户,并在一个客户端输入消息并将其广播到所有会话中的其他客户端。
使用Maven运行spring-boot:run
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éthodesetAllowedOrigins
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. 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'interfaceWebSocketHandler
. 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. #🎜🎜#ws://localhost:8080/chat
. Nous écoutons ensuite les événements WebSocket pour les événements d'ouverture, de fermeture, d'erreur et de message. #🎜🎜#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!