3
新しいSpringには、Spring documentationのWebSocketClientの例がいくつかあります。使用例ReactorNettyWebSocketClient
WebSocketClient client = new ReactorNettyWebSocketClient();
client.execute("ws://localhost:8080/echo"), session -> {... }).blockMillis(5000);
しかし、それは明らかに非常に短く、ない:
- サーバーにメッセージを送信する方法(チャネルにサブスクライブ)?
- その後、着信ストリームを処理してFluxメッセージを送信しますか?
- 接続が中断されたときにサーバーに再接続しますか?
もっと複雑な例がありますか?
UPD。 は、私のような何かをしようとした:
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());
}
をしかし、それは1つのメッセージのみを返します。私が購読を得なかったように。