2016-08-09 8 views
0

私は現在、SignalRを使用してライブチャットアプリを開発中です。ライブチャットアプリは次のように動作します。バックグラウンドでデータベースをポーリングし、サーバーからのSignalRで通知する方法を教えてください。

  1. 登録ユーザーは管理者としか話せません。 には、同時に接続されている任意の数の管理者を指定できます。
  2. 各管理者は、登録したユーザー(オフラインのユーザーも含む)といつでも話すことができます。
  3. チャットアプリのユーザー側と管理者側は、同じデータベースを共有する2つの異なるASP.NET MVCアプリにあります。 (これはユーザーの要件です)
  4. すべてのメッセージは、送信されるとすぐにデータベースに格納されます。

現在、私は両方のアプリケーションは、クライアントを更新するためのsetInterval()を使用してデータベースからデータをフェッチSignalRサーバ機能を呼び出しているが、それはSignalRを使用しての全体のポイントを破ります。サーバ側のバックグラウンドタスクでデータベースをポーリングし、SignalRを使用して特定のユーザ(メッセージを受け取ったユーザ)に通知する方法はありますか?もしそうなら、私はバックグラウンドタスクをどのようにセットアップするのですか?

+1

tbh、そのデザインはリアルタイムチャットの目的をはるかに上回り、あなたのアプリは何の利益も得ずに複雑になっています –

+0

whats ur database?そのMSSQLに 'SQL Dependency'が必要な場合 – Jag

答えて

0

トップダウン通知メカニズム(Database-Application-Client)が必要なように見えます。 @JAGと書いてありますが、ADO.NetのツールセットのSqlDependencyを使用すると、メッセージテーブルにwachを置くことができ、変更があったときに通知が送られます(メッセージが挿入されるなど)。ここにはfine exampleがあります。 SqlDependencyは、挿入/変更された実際のレコードを提供しません。変更があったことを通知するだけなので、正確なレコードを取得するクエリを設計する必要があります。通知を受け取ったら、そのレコードを照会してから、クライアントのメソッドをハブから呼び出し、レコードを引数として渡すことができます。

関連する問題