TCP/IP を介した JSON RPC 接続の実装に取り組んでいますが、根本的な問題が 1 つあります。現在、私は同期アプローチを使用していますが、これはうまく機能します。
私は送ることができます
{"id":1,"jsonrpc":"2.0","method":"Input.Home"}
そして受け取る
{"id":1,"jsonrpc":"2.0","result":true}
これは問題なく動作します。通知を受け取ると問題が発生します。これらは、予期せずいつでも到着する可能性があります。XBMC JSON RPC API を操作しています。XBMC から通知が送信された場合、一度に複数の JSON リクエストを受け取ります。例えば
{"jsonrpc":"2.0","method":"GUI.OnScreensaverActivated","params":{"data":null,"sender":"xbmc"}}{"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data":null,"sender":"xbmc"}}
これにより、JSON.NET でクラッシュが発生しますが、当然のことです。私の最初の本能は、次のメソッドが呼び出されて通知を受け取るまで待つ必要がないように、これらの通知を非同期で受信する必要があるということです。ただし、同期呼び出しを使用できなくなったため、上記の単純な例が複雑になります。すなわち
SendJson(json);
result = ReceiveJson();
過度に複雑にすることなくこれを実装するクリーンな方法はありますか? あらゆる/すべてのアドバイスをいただければ幸いです。