>  기사  >  Java  >  Spring Boot에서 WebSocket을 사용하여 푸시 및 알림 기능 구현

Spring Boot에서 WebSocket을 사용하여 푸시 및 알림 기능 구현

PHPz
PHPz원래의
2023-06-23 11:47:501522검색

현대 웹 애플리케이션 개발에서 WebSocket은 즉각적인 통신과 실시간 데이터 전송을 위한 일반적인 기술입니다. Spring Boot 프레임워크는 통합 WebSocket에 대한 지원을 제공하므로 개발자가 푸시 및 알림 기능을 구현하는 것이 매우 편리합니다.

이 기사에서는 WebSocket을 사용하여 Spring Boot에서 푸시 및 알림 기능을 구현하는 방법을 소개하고 간단한 실시간 온라인 채팅방 구현을 시연합니다.

  1. Create Spring Boot 프로젝트

먼저 Spring Boot 프로젝트를 생성해야 합니다. Spring Initializr 웹 사이트에서 웹 및 WebSocket 종속성을 사용하여 새 프로젝트를 빠르게 생성할 수 있습니다. 코드는 다음과 같습니다.

<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 구성

다음으로 WebSocket을 Spring Boot 애플리케이션에서 실행할 수 있도록 구성해야 합니다.

먼저 애플리케이션의 구성 파일에 다음 속성을 추가해야 합니다.

spring.websocket.enabled=true

다음으로 WebSocket 지원을 활성화하려면 Spring Boot 구성 클래스에 @EnableWebSocket 주석을 추가하세요. 동시에 WebSocketConfigurer 인터페이스를 구현하고 여기에 핸들러와 메시지 인터셉터를 등록하여 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

코드는 다음과 같습니다.

rrreee

위 코드에서는 클라이언트가 "/chat" 엔드포인트에 연결할 때 호출되는 핸들러(예: WebSocketHandler)를 등록했습니다. 교차 출처 요청에 허용되는 출처를 지정하려면 setAllowedOrigins 메서드를 사용하고, WebSocket을 지원하지 않는 브라우저와의 호환성을 위해 SockJS 지원을 활성화하려면 withSockJS 메서드를 사용하세요.
    1. WebSocket 핸들러 작성

    이제 모든 WebSocket 요청과 메시지를 처리할 핸들러 클래스를 작성해야 합니다.

    🎜Spring Boot에서 이 클래스는 WebSocketHandler 인터페이스만 구현하면 됩니다. WebSocket 메시지 처리를 위한 기본 기능을 제공하는 SimpeTextWebSocketHandler 클래스를 사용하고 이를 기반으로 자체 핸들러를 확장할 수 있습니다. 🎜🎜코드는 다음과 같습니다. 🎜rrreee🎜위의 코드에서는 새로운 WebSocket 세션이 생성될 때 afterConnectionUsed 메서드가 호출되고, WebSocket 세션이 닫힙니다. handleTextMessage 메서드는 모든 WebSocket 메시지를 처리하고 현재 연결된 모든 클라이언트에 보냅니다. 🎜
      🎜WebSocket 클라이언트 생성🎜🎜🎜이제 구현된 푸시 및 알림 기능을 테스트하기 위해 WebSocket 클라이언트를 생성해야 합니다. JavaScript의 WebSocket API를 사용하여 WebSocket 클라이언트를 생성할 수 있습니다. 🎜🎜코드는 다음과 같습니다. 🎜rrreee🎜위 코드에서는 WebSocket 인스턴스를 생성하고 ws://localhost:8080/chat에 연결을 시도합니다. 그런 다음 열기, 닫기, 오류 및 메시지 이벤트에 대한 WebSocket 이벤트를 수신합니다. 🎜
        🎜프로젝트 실행🎜🎜🎜이제 Spring Boot 애플리케이션을 시작하고 푸시 및 알림 기능을 테스트할 수 있습니다. 두 개 이상의 WebSocket 클라이언트를 사용하여 서로 다른 사용자를 가장하고 한 클라이언트에 메시지를 입력하고 모든 세션에서 이를 다른 클라이언트에 브로드캐스팅할 수 있습니다. 🎜🎜Maven을 사용하여 spring-boot:run 명령을 실행하여 애플리케이션을 시작하세요. 🎜🎜이제 여러 브라우저 창을 열고 각 창에 WebSocket 클라이언트를 생성해 보세요. 메시지를 입력하고 보내기 버튼을 눌러 채팅 중인 모든 세션의 다른 WebSocket 클라이언트에 메시지를 푸시하세요. 🎜🎜🎜요약🎜🎜🎜이 튜토리얼에서는 Spring Boot와 WebSocket을 사용하여 푸시 및 알림 기능을 구현하는 방법을 배웠습니다. WebSocket 지원을 통해 우리는 사용자 경험을 향상시키고 애플리케이션의 가치를 높이는 실시간, 협업 및 멀티캐스트 애플리케이션을 만들 수 있습니다. 🎜

위 내용은 Spring Boot에서 WebSocket을 사용하여 푸시 및 알림 기능 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.