Clientes WebSocket com java.net.http
Use o cliente WebSocket assíncrono padrão em vez de adicionar uma dependência de terceiros.
Comparação de Código
✕ 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);
}
});
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Sem dependência extra
O cliente WebSocket acompanha o JDK.
API assíncrona
O tratamento da conexão e das mensagens pode ser composto com CompletionStage.
Stack HTTP compartilhada
As configurações de proxy, TLS e executor usam recursos padrão do JDK.
Abordagem Antiga
Cliente WebSocket de terceiros
Abordagem Moderna
java.net.http.WebSocket
Desde o JDK
11
Dificuldade
Intermediário
Suporte JDK
Clientes WebSocket com java.net.http
Disponível
Amplamente disponível desde o JDK 11 (setembro de 2018)
Como funciona
O pacote java.net.http inclui um cliente WebSocket assíncrono integrado ao cliente HTTP padrão. As conexões são estabelecidas com CompletableFuture, callbacks de listener permitem processamento não bloqueante de mensagens por meio de CompletionStage e o cliente compartilha as configurações padrão de proxy, TLS e executor do JDK.
Documentação Relacionada
Prova