■
SignalR続き
結局、以下のようにしてなんとか完成
・クライアントとサーバー間のHubコネクションは1つ
コネクションが最大4つ?らしいので。
・すべての通信を非同期にする
同期通信方式だと大量の待ちがサーバーとクライアント間で
発生してしまうようだ。まぁProxyなんて激しい接続を繰り返すアプリ特有
の問題な気がするが。
そのため、プログラムの開始時にサーバからのコールバックの種別分、
IHubProxy.On を作っておく。その中からは.NETのeventを発生させるよう
にする。イベントのEventArgsには各接続のIDが含まれており、
クライアント側ではイベント受信時、そのIDが自分向けのイベントか
どうかをチェックし、自分向けなら適切に処理を行う。
大雑把な流れ
1. (C)サーバAPI呼び出し
HubProxy.Invoke("Receive",myID);
2. (S)クライアントのコールバックNotifyRecieved呼び出し
Clients.Caller.NotifyRecieved(myID);
3. (C)NotifyRecieved内で、.NETのstatic Recieved イベントを発生させる
4. (C)Recievedイベントを受け取ったら、
EventArgs eに含めたIDが自分用IDかチェック
5. (C)自分向けのイベントならその後の処理をする