Heim  >  Artikel  >  Java  >  Verwendung von WebSocket in Spring Boot zur Implementierung von Push- und Benachrichtigungsfunktionen

Verwendung von WebSocket in Spring Boot zur Implementierung von Push- und Benachrichtigungsfunktionen

PHPz
PHPzOriginal
2023-06-23 11:47:501521Durchsuche

In der modernen Webanwendungsentwicklung ist WebSocket eine gängige Technologie für sofortige Kommunikation und Echtzeit-Datenübertragung. Das Spring Boot-Framework bietet Unterstützung für integriertes WebSocket und macht es für Entwickler sehr bequem, Push- und Benachrichtigungsfunktionen zu implementieren.

In diesem Artikel wird die Verwendung von WebSocket zum Implementieren von Push- und Benachrichtigungsfunktionen in Spring Boot vorgestellt und die Implementierung eines einfachen Echtzeit-Online-Chatrooms demonstriert.

  1. Spring Boot-Projekt erstellen

Zuerst müssen wir ein Spring Boot-Projekt erstellen. Mithilfe der Web- und WebSocket-Abhängigkeiten auf der Spring Initializr-Website können Sie schnell ein neues Projekt erstellen. Der Code lautet wie folgt:

<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. WebSocket konfigurieren

Als nächstes müssen wir WebSocket so konfigurieren, dass es in der Spring Boot-Anwendung ausgeführt werden kann.

Zuerst müssen wir die folgenden Attribute zur Konfigurationsdatei der Anwendung hinzufügen:

spring.websocket.enabled=true

Als nächstes fügen Sie der Spring Boot-Konfigurationsklasse eine @EnableWebSocket-Annotation hinzu, um die WebSocket-Unterstützung zu aktivieren. Gleichzeitig müssen wir eine WebSocketConfigurer-Schnittstelle implementieren und darin Handler und Nachrichtenabfangjäger registrieren, um WebSocket-Anfragen und -Nachrichten zu verarbeiten. @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

Der Code lautet wie folgt:

rrreee

Im obigen Code haben wir einen Handler (d. h. WebSocketHandler) registriert, der aufgerufen wird, wenn der Client eine Verbindung zum Endpunkt „/chat“ herstellt. Verwenden Sie die Methode setAllowedOrigins, um zulässige Ursprünge für Cross-Origin-Anfragen anzugeben, und die Methode withSockJS, um die SockJS-Unterstützung für die Kompatibilität mit Browsern zu aktivieren, die WebSocket nicht unterstützen.
    1. Einen WebSocket-Handler schreiben

    Jetzt müssen wir eine Handler-Klasse schreiben, die alle WebSocket-Anfragen und -Nachrichten verarbeitet.

    🎜In Spring Boot muss diese Klasse nur die Schnittstelle WebSocketHandler implementieren. Wir werden die Klasse SimpeTextWebSocketHandler verwenden, die grundlegende Funktionen für die Verarbeitung von WebSocket-Nachrichten bereitstellt, und wir können darauf basierend unsere eigenen Handler erweitern. 🎜🎜Der Code lautet wie folgt: 🎜rrreee🎜Im obigen Code wird die Methode afterConnectionEstablished aufgerufen, wenn eine neue WebSocket-Sitzung eingerichtet wird, und die Methode afterConnectionClosed, wenn Die WebSocket-Sitzung wird geschlossen. Die Methode handleTextMessage verarbeitet alle WebSocket-Nachrichten und sendet sie an alle aktuell verbundenen Clients. 🎜
      🎜WebSocket-Client erstellen🎜🎜🎜Jetzt müssen wir einen WebSocket-Client erstellen, um die implementierte Push- und Benachrichtigungsfunktionalität zu testen. Sie können die WebSocket-API von JavaScript verwenden, um einen WebSocket-Client zu erstellen. 🎜🎜Der Code lautet wie folgt: 🎜rrreee🎜Im obigen Code erstellen wir eine WebSocket-Instanz und versuchen, eine Verbindung zu ws://localhost:8080/chat herzustellen. Anschließend überwachen wir WebSocket-Ereignisse auf Öffnungs-, Schließ-, Fehler- und Nachrichtenereignisse. 🎜
        🎜Führen Sie das Projekt aus🎜🎜🎜Jetzt können wir die Spring Boot-Anwendung starten und die Push- und Benachrichtigungsfunktionalität testen. Wir können zwei oder mehr WebSocket-Clients verwenden, um sich als unterschiedliche Benutzer auszugeben, Nachrichten in einen Client einzugeben und sie in allen Sitzungen an andere Clients zu senden. 🎜🎜Verwenden Sie Maven, um den Befehl spring-boot:run auszuführen, um die Anwendung zu starten. 🎜🎜Öffnen Sie nun mehrere Browserfenster und erstellen Sie in jedem Fenster einen WebSocket-Client. Geben Sie Ihre Nachricht ein und klicken Sie auf die Schaltfläche „Senden“, um die Nachricht in allen Sitzungen, mit denen Sie chatten, an andere WebSocket-Clients zu senden. 🎜🎜🎜Zusammenfassung🎜🎜🎜In diesem Tutorial haben wir gelernt, wie man Spring Boot und WebSocket verwendet, um Push- und Benachrichtigungsfunktionen zu implementieren. Mit der WebSocket-Unterstützung können wir Echtzeit-, Kollaborations- und Multicast-Anwendungen erstellen, die das Benutzererlebnis verbessern und den Wert der Anwendung steigern. 🎜

Das obige ist der detaillierte Inhalt vonVerwendung von WebSocket in Spring Boot zur Implementierung von Push- und Benachrichtigungsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn