New Spring hat einige WebSocketClient-Beispiel unter Spring documentation.Beispiele für die Verwendung ReactorNettyWebSocketClient
WebSocketClient client = new ReactorNettyWebSocketClient();
client.execute("ws://localhost:8080/echo"), session -> {... }).blockMillis(5000);
Aber es ist sehr kurz und nicht klar:
- Wie eine Nachricht an den Server senden (abonnieren Sie einen Kanal)?
- Dann behandeln eingehende Stream und emittieren Flux-Nachrichten?
- Erneute Verbindung zum Server herstellen, wenn die Verbindung unterbrochen ist?
Könnte jemand komplexeres Beispiel zur Verfügung stellen?
UPD. Ich habe versucht, wie etwas zu tun:
public Flux<String> getStreaming() {
WebSocketClient client = new ReactorNettyWebSocketClient();
EmitterProcessor<String> output = EmitterProcessor.create();
Flux<String> input = Flux.just("{ event: 'subscribe', channel: 'examplpe' }");
Mono<Void> sessionMono = client.execute(URI.create("ws://api.example.com/"),
session -> session
.send(input.map(session::textMessage))
.thenMany(session.receive().map(WebSocketMessage::getPayloadAsText).subscribeWith(output).then())
.then());
return output.doOnSubscribe(s -> sessionMono.subscribe());
}
Aber das gibt nur eine Nachricht. Als hätte ich kein Abo bekommen.