問題タブ [signalr-2]
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.
c# - JIT SignalR Hub の送受信
過去 3 か月間、SignalR が JIT (ジャストインタイム) レベルでどのように機能するかについては、まだ手がかりがありません。クライアントにジャストインタイムでデータを送信するハブを構築しようとしています。クライアントはデータを受信し、それに従って動作します。
編集: JIT 送受信の意味がわからない場合は、
これは、新しいデータが利用可能になったときに、サーバーが接続されたソケット クライアント データを送信できることを意味していました。ソケット接続は、サーバーがシャットダウンされている/問題がある場合、またはクライアントがソケットから切断された場合にのみ閉じられます。つまり、何があっても、サーバーから新しいデータが発生すると、常にそのデータを 1 つずつ接続クライアントに送信します。
だからここに私が見逃している/混乱しているものがあります:
- SubscribeToAll (以下の TickerHub.cs をチェックしてください) メソッドは、クライアントに通知してビープ音を鳴らす新しいデータがあるときに呼び出す場所ですか、それともどこですか?
- 非同期の WriteToChannel がどのように機能するかを知っています。基本的に、コレクションをアイテムごとにクライアントに送信します。重要な問題は、この関数全体を JIT に変換するにはどうすればよいかということです。また、このハブにサブスクライブしているクライアントのリストはどこで処理すればよいでしょうか?
現在、TickerHub.cs はデータセット (CurrencyPairs という名前) を取得し続け、クライアントに無期限にブロードキャストします。CurrencyPairs を 24 時間年中無休で同期および更新するバックグラウンド サービスがあります。バックグラウンド サービスからハブを呼び出して、ハブがその新しいデータを接続されたクライアントにブロードキャストできるようにする方法を説明/表示するには、SignalR の専門家の助けが必要です。
TickerHub.cs
私のクライアント側のコードがうまくいかないかどうかを知りたい場合は、ここにあります
wpf - SignalR aspNetコア.Net WPFクライアントが本番環境のサーバーに接続していません
私はasp.netコアをサーバーとしてWPFを使用しています。クライアントとサーバーの通信には、signalRフレームワークを実装しています。
Visual Studio/開発環境でプロジェクトを実行しているときにシームレスに接続しています。WPF アプリケーションのセットアップを行うと、スクリーン ショットに示す以下の例外が発生します。
クライアントとサーバーのasp.netコア、signalRコアに関連するすべてのパッケージバージョンを修正しました。すべて、Microsoftのドキュメントで指定されている同じバージョンです。
aspnet SignalR と AspNet Core SignalR の違い
私が使用しているバージョン
誰でもこれについて私を助けることができますか?
asp.net-mvc - 特定のユーザーにメッセージを安全に送信する方法
ASP.NET MVC 5 と SignalR を使用しています。特定のユーザーにメッセージを送信したい。このチュートリアルで説明されている方法に従いました(この回答でも提案されています)。
connectionIdとしてIUserIdProvider
使用するためにオーバーライドしました。UserId
Startup
そして、上記のカスタム プロバイダーを使用するようにアプリを変更しました。
これで、クライアントは送信先のClientIDをハブに渡すことができ、ハブは要求されたクライアントにのみメッセージを転送します。これが私のハブです。
これは完全に正常に機能しています。私の質問はセキュリティに関するもので、これが安全な Web サイトにとって正しいアプローチであるかどうかを教えてください。
Introduction to SignalR Securityによると、ランダムに生成された接続 ID は SignalR セキュリティの一部です。
サーバーは、ユーザー名と一致しない接続 ID からの要求を処理しません。悪意のあるユーザーは、ユーザー名と現在のランダムに生成された接続 ID を知っている必要があるため、有効な要求を推測できる可能性はほとんどありません。
上記のアプローチは、ランダムに選択されたconnectionIdを固定のものに置き換えていUserId
ます...上記のコードにセキュリティ上の問題はありますか?
注:私は、ユーザーがオフラインであってもメッセージを受信できる必要がある電子商取引Webサイトに取り組んでいます(メッセージはDBに保存され、オンラインになると読み取ることができます)。
asp.net-mvc - Signal R $.connection.chatHub は、JavaScript ファイルで定義されていません
'.chatHub' は、すべてのシグナル r コードをすべてのページに読み込まれるバンドルに移動した後、ページの読み込み時に未定義です
singal r のインストールに成功し、Asp.Net MVC サイトであるユーザーから別のユーザーにチャット メッセージを送信できます。しかし、MS のドキュメントには 1 つのページのみの実装が示されているため、別のページの別のユーザーにメッセージを送信したいと考えています。
そこで、javascript ハブの接続/初期化コードを、すべてのページにロードされる my-chat.js という名前のファイルに移動し、シグナル r js ファイルとシグナル r ハブ参照をこのようなバンドルに配置しました。
私のレイアウトページでは、このように正しい順序でロードされます
しかし、メイン/最初のページをロードすると、「my-chat.js」が呼び出されます
scope.initializeHub()
これは次のようになり、「$.connection.chatHub」chatHub は未定義です
これはこれを行う正しい方法ですか?
「〜/シグナル/ハブ」
バンドルのどこに置くべきではないのですか?
私も入れてみました
と
私のレイアウトページのヘッドセクションで、それはうまくいきませんでした.