2017-11-21 14 views
-1

データベースでは、一部のエンティティがいくつかのバックエンドプロセスによって更新されています。この更新された価値をリアルタイムではなくウェブサイト上でできるだけ早くユーザーに表示したいと考えています。更新されたデータをできるだけ早く(リアルタイムではなく)ユーザーに表示する方法はありますか?

これらのアプローチで直面している問題。

  • ポーリング - 私たちが知っているように、WebSocketのようなポーリングの方が優れています。
  • SSE:SSEでは、接続が長時間開いています(インターネットで検索し、長いポーリングを使用していることがわかりました)。ユーザーが増えると問題が発生する可能性があります。
  • WebSockets: - サーバーからクライアントへの一方向の通信だけが必要なので、SSEがこれより優れています。

は、当社のソリューションは

  • 当社は、ユーザーのリクエストごとにデータベースをチェックし、値を更新。

がそれをです(それがユーザーの次の要求に依存するとして、それは非常に良いではありません)良いアプローチ、またはこれを行うための良い方法があるか、私はSSE(何か誤解されている)について何かを見逃していますか?

は、(その中の任意の長い接続の問題があるかどうか?)?それは罰金このすべての代わりにSignalRを使用することです

感謝。

+0

私はノックアウトのようなUIでデータを扱うためにいくつかのクライアントサイドライブラリを使うべきだと思います。バックエンドのAPIにWebリクエストを送信し続けます。 APIによって変更されたデータがノックアウトされると、自動的にUIが更新されます。私はこのアプローチがいくつかの複雑な方法に行くよりも優れていると思います。 –

答えて

1

使用する必要があるのはあなたの要件です。

オプション:

  1. あなたはクライアントが要求を作る場合には、唯一の更新情報を必要とする - あなたは(のような異なるクライアントタイプのソリューションが必要な場合は>あなたの方法
  2. を行きますWebclient、Winformclient、Androidclientなど)をサポートしていて、サポートする必要があるブラウザの種類が異なります。すべてのブラウザがすべてのメカニズムをサポートしているわけではありません。SignalRは、クライアントがサポートするメカニズムに従って、適切なトランスポートメカニズムを自動的に選択するように設計されました。- > SignalRがオプションです。(詳細はこちら:https://www.asp.net/signalr)あなたの接続が生き続けるオプションもあります。
  3. https://pusher.com/のような代替手段もあります(これは、メッセージを送信したり、メッセージを購読することができるキューです。)しかし、これらのサービスは、たとえば一部のデータボリュームまで無料です。
-1

イベントベースの通信を使用できます。これまでにバックエンド/データベースに変更(イベント)があった場合、サーバーはクライアントにメッセージを送信する必要があります。
アップデートがある場合、アプリはそれぞれのイベントに登録し、UIを更新する必要があります。
このアプリケーションでは、この用途にソケットIOを使用しましたが、うまく機能しました。
ここにウェブサイトがありますhttps://socket.io/

関連する問題