2

ワークフローは次のようなものです。

  • ユーザーが何らかのリクエストを送信します
  • サーバーはすぐに「はい、リクエストを受け取りました。処理します」と応答します。
  • ユーザーは、サーバーがそれに取り組んでいることが通知されます
  • サーバーが終了すると、シグナルハブに次のように伝えます。「この男」の「このタスク」を終了しました
  • ハブはメッセージを angularjs クライアントに転送します
  • クライアントはメッセージをブロードキャストします

ユーザーがまだ同じビューにいる場合

  • ビューのコントローラーがメッセージを処理し、スコープが更新されます

それ以外の場合、ユーザーは何か他のことをしたかった、ページから移動したなど.

  • 何もメッセージをリッスンしていないため、ドロップされました

ここに例があります http://sravi-kiran.blogspot.com/2013/05/ImplementingSignalRStockTickerUsingAngularJSPart1.html

IRC の一部の人々に angular を尋ねたところ、クライアントが初期化でどのように作成されるか、ファクトリ内にあるか、またはコールバックがファクトリに転送される方法が特に好きではありませんでした。

一部のフィードバックには、app.run やサービス、およびイベントのブロードキャストに関するものが含まれていましたが、すべて非常に漠然としていました。

このようなものをどのように実装すればよいですか?私は当初、シングルトンを返すサービスが良いと思っていましたが、明らかにそうではありませんか? もっと良い方法があるようですか?

4

2 に答える 2

0

このような場合のために、SignalR.EventAggregatorProxyというライブラリを作成しました

ナゲットを使ってインストール

Install-Package SignalR.EventAggregatorProxy

設定方法については wiki を確認して ください https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki

セットアップが完了したら、javascript からのバックエンド イベントをリッスンするために必要な作業は次のとおりです。

以下のコードは Knockoutjs MVVM ですが、Angular MVC のようなコードに簡単に変更できます

ViewModel = function() {
   signalR.eventAggregator.subscribe(MyApp.Events.TestEvent, this.onTestEvent, this);
};

ViewModel.prototype = {
    onTestEvent: function(message) {
        console.log(message);
    }
};
于 2013-08-08T16:13:14.273 に答える
0

新しい Web ページに移動するたびに、すべてが再度読み込まれます: CSS、JS スクリプト、および新しい SignalR 接続が作成されます。

これは、 SignalR + AngularJS を一緒に使用するデモです。

于 2013-08-08T18:28:18.150 に答える