問題タブ [rsocket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
354 参照

java - Spring Boot を使用した RSocket チャネル - クライアントは自身の最初のメッセージを見逃す

シンプルな RSocket と Spring Boot サーバーがあるとします。サーバーは、すべての着信クライアント メッセージを、接続されているすべてのクライアント (送信者を含む) にブロードキャストします。クライアントとサーバーは次のようになります。

サーバ:

クライアント:

問題は、クライアントが送信する最初のメッセージがサーバーによって処理されますが、送信者に再び届かないことです。後続のメッセージはすべて問題なく配信されます。すでに接続されている他のすべてのクライアントは、すべてのメッセージを受信します。

デバッグ中にこれまでに気づいたこと

  • クライアントで channel() を呼び出すと、retrieveFlux() と subscribe() が呼び出されます。ただし、サーバーでは、対応するメソッドでブレークポイントがトリガーされません。
  • クライアントが send() を使用して最初のメッセージを送信した場合にのみ、サーバーでブレークポイントがトリガーされます。
  • サーバーで .delayElements() を使用すると、問題が「解決」されるようです。

ここで何が間違っていますか?また、サーバーのブレークポイントをトリガーするために最初に send() が必要なのはなぜですか?

前もって感謝します!

0 投票する
1 に答える
812 参照

spring - RSocket チャネル エラー:「reactor.core.publisher.Operators.error - マージされたフラックスを使用したデフォルトの onErrorDropped と呼ばれるオペレーター」

サーバーから送信されたデータがクライアント要求またはプッシュへの反応のいずれかになる rsocket チャネルを作成したいと考えています。そのためにフラックスマージを使用します。

これは参照データです。クライアントは更新を要求でき、サーバーは更新をプッシュすることもできます。

だから私はこれをサーバー側に持っています:

クライアントを停止すると、次のエラーが発生することを除いて機能します。

マージを行わなければ、エラーはありません。

私は多くの異なるバージョンを試しましたが、両方のプッシュとエラーなしでクライアントを終了させる方法を見つけることができません。

何が欠けていますか?

どうもありがとうございます。