問題タブ [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.
signalr - 再接続時に欠落したメッセージを取得する Signalr クライアント
ユーザーが Signalr サーバーに再接続したときに、見逃した可能性のあるメッセージを取得できるようにしたいと考えています。
Signalr とは別にメッセージを保持し、クライアントで受信した最後のメッセージ ID を追跡し、再接続時に新しいメッセージを再送信できることはわかっていますが、ペイロードと PayloadID を持つ SqlServer バックプレーンの Messages_0 テーブルを見ていて、そこにあるかどうか疑問に思っていましたバックプレーンにこれを実行させるか、バックプレーンを拡張してこれを実行させるための、より信号の多い方法です。
これについてどうすればよいか、何か考えはありますか?
azure - Azure の SignalR: 特定のサービス パターンでスケールアウトするにはどうすればよいですか?
私たちは、SignalR を使用して、いくつかのビジネス上重要なメトリックの頻繁な更新をプッシュするシステムを開発しています。50 から 1000 までの中程度の数のクライアントが接続され、各クライアントには固有のペイロードが必要になります。
Damian Edwards が行った講演に基づいて、私たちの負荷プロファイルは、バックプレーンを使用するのではなく、トポロジ内の特定の SignalR サーバーに接続するように基本的にクライアントを割り当てる特定のサーバー スケール アウト パターンに最もよく一致します。
これがどのように機能するかについての大まかな擬似コードは、クライアントが負荷分散された API URL で GET を実行し、ヒットしたサーバーがその URL で応答し、クライアントがその URL を使用して接続するように SignalR クライアント ライブラリを構成することです。
これはオンプレミスでうまく機能するように見えますが、現在、Azure への展開も計画しています。この要件がない場合、Azure Web サイトは最適です。ただし、このパターンでは、Web サイト内の個々のインスタンスを確実に識別できる必要があり、これを行う方法はありません。
これは、Azure Web サイトが提供する抽象化を壊しているだけですか? SignalR インスタンスごとに信頼性の高い一貫した IP またはアドレス指定可能な URL を取得するには、VM または Web ロールを使用する必要がありますか? または、特定のサーバーを使用して SignalR を Azure にデプロイした別の方法があります。
signalr - バックプレーンを使用する SignalR .NET クライアント: 明確化
Microsoft Orleans の「Grains」でイベントを SignalR バスに配置する作業を行っています。これを行うサンプル プロジェクトがあり、以下の SignalR 統合にリンクしています。
このサンプルは、Azure の Web ロールと Worker ロールのメタデータを使用して、すべての Web ロールを列挙し、それぞれに明示的にメッセージを発行しているように見えます。SignalR のバックプレーンが Azure Web ロールで適切に構成されている場合、これは必要ではないように思えます。1 つの HubConnection/HubProxy で実行する必要があります。そうですか?
実際、以下にリンクされているファイルをよく見ると、Hub 自体に奇妙なロジックがいくつか見られるので、サンプルが初歩的なバックプレーンとして機能するかどうか疑問に思います。
SignalR の経験が豊富な人がこれを明確にしてくれることを願っています。
SignalR 統合の例: https://orleans.codeplex.com/SourceControl/latest#src/samples/GPSTracker/GPSTracker.GrainImplementation/PushNotifierGrain.cs
signalr - BackPlane を使用する Signalr でユーザーを認証するための通知を送信するにはどうすればよいですか?
SignalR のバックプレーンとして Azure Service Bus トピックを使用しており、少なくとも 2 つの Web インスタンスがあります。SignalR を使用して特定のユーザーに通知を送信したいと考えています。Web インスタンスで「context.Clients.User」メソッドを使用しています。
ユーザーがこの Web インスタンスに接続され、認証されている場合、ユーザーは通知を受け取ります。
問題は、ユーザーが他の Web インスタンスで認証されている場合、これが機能しないことです。
別の Web インスタンスのユーザーに通知を送信するにはどうすればよいですか?
Autofac.SignalR と SignalR.ServiceBus を使用しています
IOC 構成:
コンテックス ExchangeRate の使用法は、ハブから派生したクラスです。
signalr - SignalR : セルフホステッド スケールアウト オプション
現在、Windows サービスで自己ホスト型の SignalR を使用しています (SSL も使用)。これは、さまざまな種類の更新をクライアント (ASP MVC アプリケーション) にプッシュするために使用されます。これはすべてかなりうまくいっています。
ただし、現在、可用性の高いソリューションを提供するためのオプションを検討しています。Windows シグナル サービスは、現時点では単一障害点であるため、弱点と見なされます。
Signalr によって提供されるスケールアウト オプションを見てきましたが、これに関する多くの情報を見つけることができません (自己ホスティングと組み合わせて)。現時点では、次の質問があります。 - これらのスケールアウト オプションをセルフ ホステッド SignalR サービスで使用することは可能ですか? - そうでない場合、他に検討できるオプションはありますか?
javascript - 複数のサーバーへの SignalR 接続
Javascript クライアントを使用して複数のSignalR
サーバーに接続できますか?
例えば:
2 回目に接続しようとすると、次のエラーが表示されます。
の 2 つのインスタンスを作成できます$.connection
か? connection
明らかに、同じものを変更すると多くの問題が発生する可能性があると思います。
signalr - サーバー ブロードキャストの実装における SignalR スケールアウト/バックプレーン - クライアントへのメッセージが重複することはありませんか?
SignalR のドキュメントによると、スケールアウト/バックプレーンは、サーバー ブロードキャスト タイプの負荷/実装の場合にうまく機能します。ただし、純粋なサーバーブロードキャストの場合、重複したメッセージがクライアントに送信されるとは思えません。次のシナリオを検討してください。
- Web ファームのロード バランサーの背後にある 2 つの Web サーバーに、ハブの 2 つのインスタンスがあります。
- 各サーバーのハブは、データベース ポーリング用のタイマーを実装して更新を取得し、トピック ID でグループ化されたグループでクライアントにブロードキャストします。
- グループ/トピックのクライアントは、2 つのサーバー間で分割される場合があります。
- 両方のハブ インスタンスが、データベースから同じ更新または重複する更新をフェッチします。
- 各ハブがバックプレーンを介してクライアントに更新を送信すると、クライアントに重複した更新が送信されることはありませんか?
提案してください。
redis - SignalR が SSL で Azure Redis に接続できない
現在、Azure で Redis キャッシュ サーバーをホストしており、signalR をバックボーンとして次のように使用しています...
GlobalHost.DependencyResolver.UseRedis("サーバー",ポート,"パスワード","イベントキー");
これはポート 6379 (非 SSL) で機能しますが、Azure Redis サーバーの SSL ポート (6380) に接続しようとするとチャット アプリが壊れ、ハブが開始されません。この問題の原因は何ですか? それとも私は何か間違ったことをしていますか?
これは、ブラウザの net::ERR_CONNECTION_RESET の /signalr/connect に表示されるエラーです。
signalr - 同じ backplaneDB 上の SignalR の異なるアプリケーション
サーバー ファームでは、イントラネット (500 人の従業員) 用にさまざまな MVC5 Web アプリケーションをホストしています。主にサーバー ブロードキャストのために、SQL Server サービス ブローカー バックプレーンで signalR 2.2 を軽く使用したいと考えています。異なるアプリケーションに同じバックプレーン DB を使用し、すべてのアプリケーションがバックプレーン DB サーバーにアクセスできるようにしたいと考えています。
質問 : 1-パフォーマンスの観点から避けるためですか。適切なプラクティス ガイダンスは見当たりませんでしたが、技術的には機能しているようです。2-メッセージがアプリケーション 1 クライアントにブロードキャストされる場合、それはアプリケーション 2 のクライアントにも送信されますか?3-アプリケーションごとに個別のバックプレーン DB を使用する利点は何ですか?
signalr - Event Hub を SignalR のバックプレーンとして使用できますか
現在、サービス バス トピックをシグナルのバックプレーンとして使用しています。しかし、イベント ハブはトピックスよりもはるかに安価です。そのため、Event Hub を SignalR のバックプレーンとして使用したいと考えています。私は今、または近い機能でこれを行うことができますか?