さて、サービスがクライアントに通知をプッシュする方法を変更します。現在、ServiceModelExが機能している方法は、いずれかのクライアントがイベントにサブスクライブされている場合、メッセージがそれらのユーザー向けであるかどうかに関係なく、サブスクライブされているすべてのユーザーにメッセージを送信することです。クライアントで、私はメッセージが彼らのためであるかどうかを決定します。ご想像のとおり、特に特定のクライアントに送信するだけでよい場合は、大量のネットワークトラフィックが発生する可能性があります。
現在、を使用してTransientSubscriptions
います。
コードをデバッグしようとしましたが、私が知ることができる唯一のことは、各サブスクライバーが何らかのタイプのジェネリックとして格納されていることCallbackChannel
です。
各TransientSubscriberはこのように定義されます。
T subscriber = OperationContext.Current.GetCallbackChannel<T>();
TransientSubscriberを追加すると、これが実行されます。
static void AddTransient(T subscriber, string eventOperation) {
lock (typeof(SubscriptionManager<T>)) {
List<T> list = m_TransientStore[eventOperation];
if (list.Contains(subscriber)) {
return;
}
list.Add(subscriber);
}
}
より良い方法があれば、私は提案を受け入れます。すべてのクライアントではなく、1つのクライアントに通知を送信したいだけです。
また、ServiceModelExに関するmsdnの記事もあります。