使用标准异步 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 和执行器配置。
相关文档
证明