目次
Spring BootでWebSocket(STOMPなし)の実装
スポンサーリンク
pom.xml
pom.xmlに「spring-boot-starter-websocket」を追加します。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
WebSocketを有効にするクラスの作成
WebSocketConfigurerを継承したクラスを作り、WebSocketを有効にします。「registry.addHandler(messageHandler(), "/test");」で設定した値でアクセスすることができます。
package com.example.demo.webSocket;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
/**
* WebSocketの管理
*/
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
/**
* WebSocketの登録
*/
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(messageHandler(), "/test");
}
/**
* WebSocketHandler(コントロールするクラス)を定義
* @return WebSocketHandler
*/
@Bean
public WebSocketHandler messageHandler() {
return new MessageHandler();
}
}
WebSocketをハンドリングするクラスの作成
TextWebSocketHandlerを継承したクラスを作り、接続確立時、メッセージ受信時、接続終了時の操作を記述していきます。
package com.example.demo.webSocket;
import java.io.IOException;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
/**
* WebSocketのHandler
*/
public class MessageHandler extends TextWebSocketHandler {
/**
* 接続確立
*/
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("WebSocketの接続が確立しました。");
}
/**
* メッセージの送受信
*/
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
System.out.println("メッセージ受信:" + message.getPayload());
try {
TextMessage outputMessage = new TextMessage("メッセージ返信:送信内容=" + message.getPayload());
session.sendMessage(outputMessage);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 接続終了
*/
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
System.out.println("WebSocketの接続が終了しました。");
}
}

スポンサーリンク
WebSocketの動作確認
今回は「wscat」というツールで確認してみます。
サーバ(バックエンド)とクライアント(フロントエンド)の両方を実装する場合は、そのまま動作確認できますが、どちらか片方を実装する場合や、両方実装するが担当者が別の場合、わざわざ試験用にサーバ もしくは クライアントを作るのは効率よくありません。
そこで「wscat」を使えば、簡単に試験することができます。
wscatのインストール方法
Node.js が入っていれば npm コマンドでインストールすることができます。
npm install -g wscat
※WindowsにNode.jsをインストールする手順は以下の通りです。
インストール手順
wscatでWebSocketの動作確認
Spring Bootで作成したWebSocketのプロジェクトを起動し、WebSocketサーバを立ち上げます。
そして、今回は「wscat」をWebSocketクライアントとして使用、次のコマンドでWebSocketサーバに接続することができます。
[HTTP接続]
wscat -c ws://localhost:8080/test
[HTTPS接続]
wscat -c wss://localhost:8080/test
ちなみに「wscat」をサーバとして立ち上げる場合は、次のコマンドを使用します。これでWebSocketクライアントから「localhost:3000」で接続することができます。
wscat -l 3000
※3000ポートを使用する場合の例

