問題タブ [signalr-backplane]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2680 参照

.net - SignalR のバックプレーンとメッセージ バスの実装

私のチームは、負荷分散された IIS Web サーバーと MongoDB を備えた環境を実行しています。SignalR を使用して、ユーザーに通知をプッシュしたいと考えています (将来的にはさらに増える可能性があります)。既存の MongoDB を SignalR のバックプレーンとして使用できるように、新しい SignalR ScaleoutMessageBus を実装しようとしています。私が欲しいもののタイプのように見える実装を GitHub で見つけました。残念ながら、これは SignalR 0.5.3 用に実装されており、SignalR 2.0.2 とはまったく互換性がありません。

私はそれを更新して機能させ、次の部分を機能させようとしています:

  • 依存性注入は、新しいメッセージ バスを適切にロードします
  • データベースに正しく接続し、新しいメッセージの末尾のカーソルをたどります (SignalR 関連ではありません)。
  • トピックとサブスクリプションは、既存の機能を使用して機能しているように見えます

ScaleOutMessageBus の一部がどのように動作するか、特にメッセージ ストリームの機能と、それらが全体的な機能にどのように関連しているかを理解するのに苦労しています。SQL バックプレーンを見ると、ストリームへの読み取りとストリームからの書き込みをデータベースへの読み取りと書き込みに置き換えたいと思われますか? あれは正しいですか?

これが私の Send 実装です(動作しているようです)

私の MongoMessageWrapperClass は ScaleoutMessage を拡張しますが、末尾のカーソルが参照する _id プロパティを広告します。

これにより、メッセージがデータベースに正しく書き込まれているようです。次のステップは、後続のカーソルが新しいメッセージを見つけたときに呼び出される新しい OnReceived を作成し、Mongo からデータをアンラップして元のメッセージを取得し、それらを既存の ScaleoutMessageBus 基本クラスに渡すことだと思います。

これを行う場合、OnReceived の streamIndex および id 値として何を渡す必要がありますか? また、Send 関数で受信しているメッセージは、OnReceived がパラメーターとして受け取る ScaleoutMessage ではなく Message 型です。IList を ScaleoutMessage に変換する必要がありますか?

カスタム スケールアウト ソリューションとバックプレーンの構築に関するドキュメントを見つけることができませんでした。利用可能なものはありますか(ソースコードを調べて理解する以外に?

0 投票する
1 に答える
564 参照

signalr - ヘッダーを使用した SignalR ISAuthenticated

私の目標は、独自のトークンでカスタムヘッダーを使用して、シグナルサービスに対してユーザーまたはマシンを認証することです。

この方法論を ASP.net WEB API の下でうまく使用して、独自のカスタム クレーム ベースの認証と承認を実行してきました。

私たちのWeb APIは次のとおりです。

次に、Thread.CurrentPrincipal = principal; を上書きする AuthorizationHandler があります。これで完了です。

SignalR 内で実装しようとしました: 1. Authorize を使用してハブをマークします。 2. カスタム承認属性を実装しました。しかし、正しいヘッダーが送信された場合に true を返す以外に、生成したクレーム ベースのプリンシパルに Context.User を変更することはできません。

しかし、Context.User を取得して、ハブへの接続に使用されている実際のユーザーを表示することはできません。

どんな提案でも大歓迎です。

これを達成したい主な理由は、システムに接続するユーザー/マシンの種類がいくつかあるためです。

誰でも何か提案。

0 投票する
1 に答える
663 参照

c# - signalR と SQL バックプレーンがメッセージをグループに送信

グループに問題があり、SQL バックプレーンを介してグループにメッセージを送信しています

ここに記載されている手順に従いまし た。バック プレーンが構成されていない場合、クライアントはグループ経由ですべてのメッセージを受信します。バック プレーンを構成すると、クライアントはメッセージを受信しません。

デバッグ印刷をオンにしましたOnDisconnected(), OnReconnected()が、それらは起動されません。だから私はクライアントがまだ接続されていることを知っています

0 投票する
2 に答える
760 参照

redis - Redis を使用した SignalR スケールアウト

http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-with-redis このリンクをたどって、単純なシグナル チャット ビジュアル スタジオ プロジェクトをスケールアウトしました。

Redisを実行するAzureでubuntu仮想マシンを作成しました。

GlobalHost.DependencyResolver.UseRedis("server", port, "password", "AppName"); を追加しました。私のスタートアップクラスに、今は自分のマシンでのみテストしており、他のサーバーではテストしていません。しかし、うまくいきません。

その行を入力するとすぐに、チャット プログラムが 1 行目 (以下を参照) でスタックし、2 行目に到達しません。

1)$.connection.hub.start().done(function () { 2) $('#sendmessage').click(function () { 何が間違っているのでしょうか?

0 投票する
2 に答える
767 参照

azure - 役割間通信のための Azure SignalR とバックプレーン

現在、Azure Web サイトで signalR を単一のインスタンスで使用して、データをクライアントにプッシュしています。問題はありません。

プロジェクトを個別の web/worker ロールと wcf ロールに分割して、それらを個別にスケーリングできるようにします。

サイトはこのように動作します。

シナリオA

ユーザーが Web ロールにデータを送信すると、そのデータはワーカー A の準備が整った Service Bus キューに入れられ、アイドル状態の場合に (ポーリングを保存するために) 新しいアイテムが追加されたことを示すメッセージがワーカー A に送信されます。ワーカー A がそれを処理すると、特定のクライアントにプッシュする Web ロールにメッセージを送信します。

シナリオB

wcf ロールでデータを受信すると、ワーカー B の準備が整った別の Service Bus キューに入れられます。wcf ロールは、ワーカー B がアイドル状態の場合に備えて、新しいアイテムが追加されたというメッセージをワーカー B に送信します。ワーカー B がメッセージを処理すると、メッセージが Web ロールに送信され、特定のクライアントにプッシュされます。

以下に悪い例を示します。 ダイアグラム

ユーザーに対する Web ロールの signalR サービス バス バックプレーンを有効にします。私がよくわからないのは、自分の役割が互いに通信する方法です。

必要なもの:

Web ロール => ワーカー A

ワーカー A => Web ロール

wcf ロール => ワーカー B

ワーカー B => Web ロール

Web、ワーカー A、およびワーカー B にすべてサービス バス トピックを使用してハブを作成していますか? そして、どうにかして signalr .net クライアントに接続しますか? パブリックに公開せずに、Web ロールのすべてのインスタンスにアクセスするようにするにはどうすればよいですか?

なんらかの理由で、何百ものクライアントが JavaScript 経由で Web ロール ハブに接続するのは簡単に思えますが、いくつかの内部のものを接続しようとしても、よくわかりません。

0 投票する
1 に答える
666 参照

azure - Azure Service Bus の使用時に SignalR が接続に失敗する

Windows azure サービス バスをバックプレーンとして使用すると、SignalR の接続にランダムな問題が発生します。デバッグの問題は、(コードの変更なしに) ランダムに発生するように見えることですが、実際に発生すると、消えるまでに時間がかかります。私は通常、Visual Studio を閉じる、再起動する、longpolling に切り替える、iis express を閉じるなど、さまざまなことを試みますが、何が修正されているのか特定できません。おそらく、Azure サービス自体の問題です。

ログをセットアップすると、これが返されます: SignalR.ServiceBusMessageBus 情報: 0: サービス バスで 5 つのトピックをサブスクライブしています... SignalR.ServiceBusMessageBus エラー: 0: サービス バス サブスクリプションまたはトピックの作成に失敗しました: トークンプロバイダーは、' https://x-sb.accesscontrol.windows.net/WRAPv0.9/ 'へのアクセス中にセキュリティ トークンを提供できませんでした。トークン プロバイダーから返されたメッセージ: 'リモート名を解決できませんでした: 'x-sb.accesscontrol.windows.net''。

同じエラーで他の投稿を読みましたが、関連していないようです。

私の SignalR 構成は次のようになります。

longPolling に切り替えると、一時的に機能しますが、再び失敗し始めます。SignalR は longPolling 設定を無視し始め、とにかく websockets を使用しようとします。

UseServiceBus を削除するとすぐにすべてが正常に動作しますが、それを使用すると、接続しないか、longPolling が指定されているにもかかわらず Websockets を使用しようとする (失敗する) というあらゆる種類の問題が発生します。

0 投票する
2 に答える
2549 参照

redis - SignalR バックプレーン (Redis) が実際に正常に動作しているかどうかを確認するにはどうすればよいですか?

私は現在 SignalR 2.0.3 をプレイしており、Redis for Windows を利用する BackPlane でスケールアウトしています http://msopentech.com/blog/2013/04/22/redis-on-windows-stable-and-reliable/

VS に適切な SignalR.Redis パッケージを統合しました。

スタートアップに次の変更を加えました。

それはうまく構築されます。私のクライアントは正常に接続しているようです。クライアントとサーバーの間で通知を送信できます。また、その逆も可能です。

Redis クライアントから、次のように入力できます。

うまくいっていると思いますが...

いくつかの質問: 1)それが実際に機能していることをどのように確認できますか?

2) Redis サーバー (ただし Redis クライアント) で何を調べることができますか?

3)どのデータ構造 (キーと値のペア、リスト、ハッシュ、セット) に何が格納されていますか?

何が起こっているのか、もう少し詳しく見てみたいと思います。http://redis.io/commandsのコマンドを見てきまし た。実際に何が起こっているのかをマッピングするのに役立つものは何もありません。

誰かがここで私を正しい方向に向けることができますか?

ありがとう、ジョンB

0 投票する
2 に答える
1810 参照

sql - Is it possible to add SignalR messages directly to the SQL Backplane?

I'd like to know if I can add SignalR messages directly to the SignalR SQL Backplane (from SQL) so I don't have to use a SignalR client to do so.

My situation is that I have an activated stored procedure for a SQL Service Broker queue, and when it fires, I'd like to post a message to SignalR clients. Currently, I have to receive the message from SQL Service Broker in a seperate process and then immediately re-send the message with a SignalR hub.

I'd like my activated stored procedure to basically move the message directly onto the SignalR SQL Backplane.