java.net.httpによるWebSocketクライアント
サードパーティ依存関係を追加する代わりに、標準の非同期WebSocketクライアントを使用する。
コード比較
✕ Third-party library
WebSocketClient client =
new WebSocketClient(serverUri) {
@Override
public void onMessage(String message) {
handle(message);
}
};
client.connect();
✓ Java 11+
HttpClient.newHttpClient()
.newWebSocketBuilder()
.buildAsync(serverUri,
new WebSocket.Listener() {
@Override
public CompletionStage<?> onText(
WebSocket socket,
CharSequence data,
boolean last) {
handle(data.toString());
return WebSocket.Listener.super
.onText(socket, data, last);
}
});
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
追加の依存関係なし
WebSocketクライアントはJDKに同梱されています。
非同期API
接続とメッセージ処理をCompletionStageと組み合わせられます。
共有HTTPスタック
プロキシ、TLS、エグゼキュータの設定にはJDK標準の機能を使用します。
旧来のアプローチ
サードパーティ製WebSocketクライアント
モダンなアプローチ
java.net.http.WebSocket
JDKバージョン
11
難易度
中級
JDKサポート
java.net.httpによるWebSocketクライアント
利用可能
JDK 11(2018年9月)以降、広く利用可能
仕組み
java.net.httpパッケージには、標準HTTPクライアントと統合された非同期WebSocketクライアントが含まれています。接続はCompletableFutureで確立され、リスナーコールバックはCompletionStageによるノンブロッキングのメッセージ処理をサポートし、クライアントはJDK標準のプロキシ、TLS、エグゼキュータ設定を共有します。
関連ドキュメント
証明