こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の24日目の記事です。(執筆は6日遅れの30日とか言えない。)
今回は、JavaでWebSocketを扱う方法を紹介します。Javaの記事ってなかなか出てこないんですよね。特にSSL対応のやつとか。
(調べ方が悪いのかもしれない。)
Java標準機能のHttpClientでWebSocket
Java標準機能のHttpClientでWebSocketを接続できます。調べてもなかなか出てこなかったのでコードを紹介します。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
public final class NarikakunWebSocket {
private WebSocket ws;
private void webSocketStart() {
HttpClient client = HttpClient.newHttpClient();
WebSocket.Builder wsb = client.newWebSocketBuilder();
WebSocket.Listener listener = new WebSocket.Listener() {
@Override
public void onOpen(WebSocket webSocket){
// 接続時
ws.sendText("Hello", true);
}
@Override
public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
// 切断時
return null;
}
};
CompletableFuture<WebSocket> comp = wsb.buildAsync(URI.create("WS URL"), listener);
try {
ws = comp.get();
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
}
少しでも参考になればいいなと思います。