1. HTTPポーリング vs WebSocket
数秒おきにサーバーに問い合わせるポーリングは、ヘッダーのオーバーヘッドが大きくサーバーリソースを無駄遣いします。WebSocketは単一のTCPコネクション上で常時接続を確立し、ヘッダーなしで双方向にメッセージを送受信できます。
2. STOMPプロトコルによるメッセージルーティング
生のWebSocketの上にSTOMP(Simple Text Oriented Messaging Protocol)を重ねることで、パブリッシュ/サブスクライブ(Pub/Sub)モデルが簡単に構築できます。
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws-kawaii").setAllowedOriginPatterns("*").withSockJS();
}
}