私は利用可能なすべての可能なパターンについてZGuideを読んでいます。これをC#GUI環境に変換しようとしています。この環境では、サーバーとクライアントをGUIと主要なビジネスルールに対して別々のスレッドにする必要があります。
怠惰な海賊の例は非常に役に立ちましたが、次のニーズに合うZMQの一般的なパターンを完全には理解していません。
クライアント
- 確認応答付きのメッセージをサーバーに送信します
- ビジネス状態に関するメッセージをサーバーから取得します
- サーバーの「切断」または「失敗」をエンドユーザーに警告するための再試行ロジックと失敗ロジックがあります
サーバ
- クライアントメッセージと確認応答付きの応答を受信します
- 内部状態に基づいて追加のメッセージを送信します
- クライアントでロジックを再試行するための応答(おそらくキープアライブメッセージ)
- 受信しているキープアライブメッセージに基づく既知の「接続された」クライアントのリストがあります
現在、他のソケットに接続する必要があるソケットについて混乱しています。次に、これに、スレッドの境界で維持する必要があるものを追加しました。
私が現在いるところは次のとおりです。
|クライアント-再試行-REQ| ->|REP-キープアライブ-サーバー|
私の例で見ているのは、サーバーが接続されているクライアントにメッセージを送信できないことです。接続されているすべてのクライアントのアドレスを保存し、サーバーからこれらの特定のクライアントに送信できるようにするためのトリックはありますか?