新しい通知を受け取ったときにユーザーに通知する必要があるアプリケーションに取り組んでいます。アプリケーションはAzureでホストされ、.NET MVC 3になります(おそらく重要ではありませんが、参考までに)。私も
通知はMSSQLデータベース(2008)に保存され、IsRead
フィールドがあります。通知は、さまざまなユーザーおよびサーバーのアクションから生成されます。ユーザー設定に基づいて、一部の通知はで作成されIsRead == false
ます。
SignalRの処理には完璧だと思う、2つの異なるシナリオがあります。少しのガイダンスが必要です。
- ユーザーはサイトを閲覧するためにいくつかのウィンドウを開いており、そのユーザーに割り当てられた新しい通知行が追加され、
IsRead == true
- すべての特定のユーザーのブラウザインスタンスに、通知ポップアップを表示するために呼び出される特定のjs関数を持たせたい
- ユーザーはいくつかのウィンドウを開いており、通知ポップアップをクリックします。
- すべての特定のユーザーのブラウザインスタンスに、通知ポップアップを削除するために呼び出される特定のjs関数を持たせたいです。(クリックを処理した特定のブラウザインスタンスのみがjs関数を実行して、通知の詳細を表示します)
私が試したこと
最初のシナリオでは、通知がデータベースに書き込まれるのと同じアクションが、すべてのユーザーのブラウザーインスタンスに通知する責任があると思います。
2番目のシナリオは、ポップアップをクリックすることでサーバーエンドポイントがAjax経由で呼び出され、そのエンドポイントがデータベースを更新して通知を既読としてマークし、他のすべてのユーザーのブラウザーインスタンスに通知するという点で似ています。
ASP.NETフォーム認証ユーザー名に基づいてSignalRクライアントを追跡する方法があれば、それは両方のシナリオの問題を解決するのに役立つと思います。
TL; DR
私の主な問題は、SignalRを使用して特定のユーザーのブラウザインスタンスすべてに信号を送る方法がわからないことです。ASP.NETフォーム認証ユーザー名に基づいてグループを作成することを考えていました。これは機能しますか?これを処理するSignalRに組み込まれているより簡単な方法はありますか?