Spring BootでWebSocketを統合してメッセージプッシュを実現するにはどうすればよいですか?

Spring BootでWebSocketを統合してメッセージプッシュを実装するには、次の手順に従います。

  1. pom.xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. WebSocketConfigurer
  2. WebSocket ハンドラーを登録する
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myWebSocketHandler(), "/websocket").addInterceptors(new WebSocketInterceptor());
    }

    @Bean
    public WebSocketHandler myWebSocketHandler() {
        return new MyWebSocketHandler();
    }
}
  1. WebSocketハンドラ
public class MyWebSocketHandler extends TextWebSocketHandler {
    private static final Set<WebSocketSession> sessions = Collections.synchronizedSet(new HashSet<>());

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

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 处理收到的消息
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        sessions.remove(session);
    }
}
  1. ハンドシェイクインターセプター
public class WebSocketInterceptor implements HandshakeInterceptor {
    @Override
    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
        // 在握手前执行操作
        return true;
    }

    @Override
    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
        // 在握手后执行操作
    }
}
  1. メッセージを送信する
@Autowired
private SimpMessagingTemplate messagingTemplate;

public void sendMessage(String message) {
    messagingTemplate.convertAndSend("/topic/message", message);
}

WebSocket接続は以上手順で完了し、Spring Bootでメッセージプッシュを利用することができます。フロントページ側では、JavaScriptのnew WebSocket(url)でWebSocket接続を作成し、onmessageイベントでプッシュされたメッセージを受け取ることができます。

bannerAds