問題タブ [signalr-hub]
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# - SignalRハブを使用してサーバーからクライアントにメッセージを送信するにはどうすればよいですか
私はsignalRの調査を始めたばかりで、サーバーからすべてのクライアントにメッセージを送信できるようにしたいと考えています。
これが私のハブです
これが私のクライアントページです
これはすべて完璧に機能し、2つの異なるブラウザ間で「チャット」することができます。
次に実行したいのは、サーバーからすべてのクライアントへのメッセージを開始することです。
だから私はこれを試しました。
これはうまくいかないようです。タイマーは機能します。「aTimer_Elapsed」イベントハンデラーは3秒ごとに実行されますが、チャットハブの「Send」メソッドは実行されません。
何か案は?
c# - Windows8を搭載したsingalR
誰かがWindows8またはServer2012で実行するsignalRを入手しましたか?Signalr URLを参照すると、次のエラーが発生します。
signalr - SignalR エラー 404
SignalR ハブを使用する SignalR ドキュメントからサンプルをコピーしました。開発環境 (VS) では問題なく動作します。ホストにアップロードした後、signalr/hub でエラー 404 が発生しました。SignalR FAQ を確認したところ、次のことをお勧めします-
と、
残念ながら、どれも私のために働いていませんでした...
助言がありますか ?
knockout.js - SignalR/CoffeeScript Hub コールバックの問題
これはうまくいきます
一方、これは
サーバー側のハブがサーバー メッセージを受信することになりますが、コールバックを行うことはできません。
ここで何が欠けていますか??? これは私を壁に追いやっています。明らかに、プロトタイプ ベースのソリューションはすべてを「静的」にするため機能しますが、現時点では適切に分離されたコードを記述できないため、私は不自由です。
ハブが何を呼び出そうとしているかを確認する方法はありますか?? SignalR のドキュメントでは、トレース/ログ記録について説明していますが、その方法については説明していません。
javascript - SignalR: ハブ メソッドを呼び出すときの内部サーバー エラー
SignalR を数日間いじってみましたが、これは驚異的なライブラリであると言わざるを得ません。私はそれを使っていくつかのことを行うことができ、その単純さに驚いていましたが、最近小さな問題に遭遇しました.
ブラウザーで JavaScript から Hub メソッドを呼び出すことができません。リクエストは 500 エラー コードを返します。エラー ページのソースを見ると、次のように表示されます。
私のサーバー側のコードは次のとおりです。
そしてクライアント側では私は持っています:
私はしばらく掘り下げてきましたが、問題の原因を見つけることができません.誰かが私を助けてくれませんか?
signalr-hub - SignalR と Silverlight
"MyHub" というハブに接続するために SignalR.Hubs を使用しています。仮想ディレクトリ "MyVD" を使用して IIS でハブをホストしています: これが方法です。ハブに接続しようとしています:
これを行うと、「リモート サーバーがエラーを返しました: NotFound」というメッセージで例外が発生します。
System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) で SignalR.Client.Http.HttpHelper.<>c_ DisplayClass2.b _0 (IAsyncResult ar) で System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction、アクション1 endAction, Task
1 約束)。
Visual Studio で直接実行すると、ハブにネゴシエートできることに注意してください (もちろん、ローカル開発サーバーを指すように URL を変更します)。
ありがとう、アルピー
asp.net-mvc - ハブの外部から特定のクライアントを呼び出すSignaler
Chris Fulstowプロジェクトlog4net.signalrを知っています。すべてのリクエストからのすべてのメッセージをログに記録するため、非本番ログが必要な場合は素晴らしいアイデアです。ログメッセージを発信し、適切なブラウザにsedバックするリクエストによってログメッセージを区別するものが欲しいのですが。
これが私がアペンダーでしたことです:
セッションIDをCookieに添付しようとしていますが、Cookieが上書きされるため、同じマシンでは機能しません。これは、イベントを添付するためにクライアントで使用するコードです。
その結果、接続されている最後のページだけにログメッセージが表示されます。現在のリクエストを発信するブラウザからの現在の接続IDを取得するための戦略があるかどうかを知りたいのですが、ある場合は。また、ブラウザごとのロギングを実現するためのより良い設計があるかどうかを知りたいと思います。
編集
慣例的な名前ベースのCookie(log-id-someguidなど)を作成することもできますが、もっとスマートなものがあるのではないかと思います。
バウンティ 私はその質問にバウンティを開始することに決めました。さらに、私の戦略が理にかなっているかどうかを確認するために、アーキテクチャについて質問します。私の疑問は、サーバーからクライアントへの単一の「方向」でハブを使用しており、ハブへの呼び出しからではなく、他の要求(他のハブで発生する可能性のある要求)から発生したアクティビティをログに記録するために使用しています。その正しいアプローチは、ブラウザに表示されるlog4netアペンダーを目標として持っていますか?
asp.net - サーバー側の SignalR ハブ IConnected と IDisconnect が機能しない
以下のように、 SignalRのサンプル コードを VB.NET に変換しました。test
クライアントから呼び出すと は正しく呼び出されますが、サーバー側の、Connect
、Disconnect
およびReconnect
は呼び出されません。他にすべきことはありますか?IE10、Chrome、および FF でテストしました。
編集済み:期待どおりに動作しています$.connection.hub.disconnected
。stateChanged
signalr - Signalr クロスドメイン接続ユーザー認証
シグナルハブを別のドメインでホストしており、メインアプリケーションからハブへのクロスドメイン接続を行っています。ユーザーがメイン アプリケーションにログインすると、シグナル接続が確立されます。今、私が抱えている問題は、ハブ内の接続ユーザーを識別する方法です。HUb がメイン アプリケーション内にある場合は、ログインしているユーザーの UserContext を使用して辞書 (MessengR アプリの例) を維持し、Connect および Disconnect イベントでそれらを更新できます。
しかし、クロスドメイン接続であるため、UserContext がなく、その接続 ID が誰のものであるかを知る方法がありません。私はここで迷っています。Connect() イベントでクライアントからクエリ文字列を渡すことは可能ですか? 追跡に使用できるユーザーを識別するためのトークンがあります。または、ユーザーを接続 ID にリンクする他の方法。誰かが私に指示を与えることができれば。ありがとう!
signalr - SignalR がエラーを返す - オブジェクトを逆シリアル化するときに予期しない終了
私はsignalRを使用している単純なプロジェクトを持っています。ページが読み込まれると、signalRスクリプトが正常に読み込まれますが、その直後に
http://localhost:24634/signalr/signalr/connect?transport=foreverFrame&connectionId=dca2db9c-b16a-4b96-96dc-9a6b187b6d9e&connectionData=[{"name":"notifier"}]&tid=5&frameId=1
500 内部サーバー エラーを返します。フィドラーでこの要求を確認しました。エラー メッセージは次のように表示されます
オブジェクトの逆シリアル化中に予期しない終了が発生しました。
これが私のハブ定義です
ここに私のクライアントコードがあります
このエラーの原因は何ですか?
編集 ここにスタックトレース情報があります
[JsonSerializationException: オブジェクトのデシリアライズ中に予期しない終了が発生しました。
1行目
、位置2
。 .Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader リーダー、Type objectType、JsonContract コントラクト、JsonProperty メンバー、Object existingValue) +86
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IWrappedCollection ラップリスト、JsonReader リーダー、文字列参照、JsonArrayContract コントラクト) +635
Newtonsoft.Json.Serialization.<>c_ DisplayClass1. <CreateAndPopulateList>b _0(IList l, Boolean isTemporaryListReference) +124
Newtonsoft.Json.Utilities.CollectionUtils.CreateAndPopulateList(type listType, Action 1 groups, IRequest request) +140 SignalR.PersistentConnection .ProcessRequestAsync (HostContext コンテキスト) +227 SignalR.Hubs.HubDispatcher.ProcessRequestAsync (HostContext コンテキスト) +120 SignalR.Hosting.AspNet.AspNetHandler.ProcessRequestAsync (HttpContextBase コンテキスト) +463 SignalR.Hosting.AspNet.HttpTaskAsyncHandler.System.Web.IHttpAsyncHandler. BeginProcessRequest(HttpContext コンテキスト、AsyncCallback cb、オブジェクト extraData) +682 populateList) +546
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateAndPopulateList(JsonReader reader, String reference, JsonArrayContract contract) +101
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String reference) +62
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue) +113
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueNonProperty(JsonReader reader, Type objectType, JsonContract contract, JsonConverter converter) +118
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType) +125
Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) +311
Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) +107
Newtonsoft.Json.JsonConvert.DeserializeObject(String value, JsonSerializerSettings settings) +66
SignalR.JsonNetSerializer.Parse(String json) +57
SignalR.Hubs.HubDispatcher.CreateConnection(String connectionId, IEnumerable
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +301 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
EDIT2:
もう 1 つ注意 - エラーなしで実行されるページから、要求された URL は次のようになります
localhost:24634/signalr/signalr/connect?transport=foreverFrame&connectionId=98e6d5b3-b164-4013-92c2-418aa6254f9e&connectionData=%5B%7B%22name%22%3A%22notifier%22%7D%5D&tid=7&frameId=1
失敗したリクエストの URL は次のようになります
localhost:24634/signalr/signalr/connect?transport=foreverFrame&connectionId=9b398750-99d6-4188-88b5-b41ad9eb82d5&connectionData=[{"name":"notifier"}]&tid=1&frameId=1
お気づきかもしれませんが、connectionData クエリ文字列パラメータが URL で定義される方法が異なります。特に、最初の URL では、connectionData はクエリ文字列値を URL エンコードし、2 番目のクエリ文字列パラメータは html エンコードされています。リクエスト ヘッダーを調べましたが、失敗したリクエストの Content-Type は text/html で、2 番目のリクエストの Content-Type は application/json です。
編集3:
jquery.signalR-0.5.3.jsファイルで、connectionDataが解析される場所を見つけました。実際にconnectionData値をエンコードするコードは次のとおりです
ご覧のとおり、window.escape() は connectionData のエンコードを担当していますが、このコードをデバッグすると、実際に window.escape(connection.data) が url エンコードではなく connection.data をエンコードしていることがわかります。しかし、これはあるページでのみ発生しており、別のページでは期待どおりに機能します。