問題タブ [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.

0 投票する
3 に答える
45490 参照

c# - SignalRハブを使用してサーバーからクライアントにメッセージを送信するにはどうすればよいですか

私はsignalRの調査を始めたばかりで、サーバーからすべてのクライアントにメッセージを送信できるようにしたいと考えています。

これが私のハブです

これが私のクライアントページです

これはすべて完璧に機能し、2つの異なるブラウザ間で「チャット」することができます。

次に実行したいのは、サーバーからすべてのクライアントへのメッセージを開始することです。

だから私はこれを試しました。

これはうまくいかないようです。タイマーは機能します。「aTimer_Elapsed」イベントハンデラーは3秒ごとに実行されますが、チャットハブの「Send」メソッドは実行されません。

何か案は?

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

c# - Windows8を搭載したsingalR

誰かがWindows8またはServer2012で実行するsignalRを入手しましたか?Signalr URLを参照すると、次のエラーが発生します。

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

signalr - SignalR エラー 404

SignalR ハブを使用する SignalR ドキュメントからサンプルをコピーしました。開発環境 (VS) では問題なく動作します。ホストにアップロードした後、signalr/hub でエラー 404 が発生しました。SignalR FAQ を確認したところ、次のことをお勧めします-

と、

残念ながら、どれも私のために働いていませんでした...

助言がありますか ?

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

knockout.js - SignalR/CoffeeScript Hub コールバックの問題

これはうまくいきます

一方、これは

サーバー側のハブサーバー メッセージを受信することになりますが、コールバックを行うことはできません。

ここで何が欠けていますか??? これは私を壁に追いやっています。明らかに、プロトタイプ ベースのソリューションはすべてを「静的」にするため機能しますが、現時点では適切に分離されたコードを記述できないため、私は不自由です。

ハブが何を呼び出そうとしているかを確認する方法はありますか?? SignalR のドキュメントでは、トレース/ログ記録について説明していますが、その方法については説明していません。

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

javascript - SignalR: ハブ メソッドを呼び出すときの内部サーバー エラー

SignalR を数日間いじってみましたが、これは驚異的なライブラリであると言わざるを得ません。私はそれを使っていくつかのことを行うことができ、その単純さに驚いていましたが、最近小さな問題に遭遇しました.

ブラウザーで JavaScript から Hub メソッドを呼び出すことができません。リクエストは 500 エラー コードを返します。エラー ページのソースを見ると、次のように表示されます。

私のサーバー側のコードは次のとおりです。

そしてクライアント側では私は持っています:

私はしばらく掘り下げてきましたが、問題の原因を見つけることができません.誰かが私を助けてくれませんか?

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

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, Func2 endFunction、アクション1 endAction, Task1 約束)。

Visual Studio で直接実行すると、ハブにネゴシエートできることに注意してください (もちろん、ローカル開発サーバーを指すように URL を変更します)。

ありがとう、アルピー

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

asp.net-mvc - ハブの外部から特定のクライアントを呼び出すSignaler

Chris Fulstowプロジェクトlog4net.signalrを知っています。すべてのリクエストからのすべてのメッセージをログに記録するため、非本番ログが必要な場合は素晴らしいアイデアです。ログメッセージを発信し、適切なブラウザにsedバックするリクエストによってログメッセージを区別するものが欲しいのですが。

これが私がアペンダーでしたことです:

セッションIDをCookieに添付しようとしていますが、Cookieが上書きされるため、同じマシンでは機能しません。これは、イベントを添付するためにクライアントで使用するコードです。

その結果、接続されている最後のページだけにログメッセージが表示されます。現在のリクエストを発信するブラウザからの現在の接続IDを取得するための戦略があるかどうかを知りたいのですが、ある場合は。また、ブラウザごとのロギングを実現するためのより良い設計があるかどうかを知りたいと思います。

編集

慣例的な名前ベースのCookie(log-id-someguidなど)を作成することもできますが、もっとスマートなものがあるのではないかと思います。

バウンティ 私はその質問にバウンティを開始することに決めました。さらに、私の戦略が理にかなっているかどうかを確認するために、アーキテクチャについて質問します。私の疑問は、サーバーからクライアントへの単一の「方向」でハブを使用しており、ハブへの呼び出しからではなく、他の要求(他のハブで発生する可能性のある要求)から発生したアクティビティをログに記録するために使用しています。その正しいアプローチは、ブラウザに表示されるlog4netアペンダーを目標として持っていますか?

0 投票する
0 に答える
674 参照

asp.net - サーバー側の SignalR ハブ IConnected と IDisconnect が機能しない

以下のように、 SignalRのサンプル コードを VB.NET に変換しました。testクライアントから呼び出すと は正しく呼び出されますが、サーバー側の、ConnectDisconnectおよびReconnectは呼び出されません。他にすべきことはありますか?IE10、Chrome、および FF でテストしました。

編集済み:期待どおりに動作しています$.connection.hub.disconnectedstateChanged

0 投票する
0 に答える
436 参照

signalr - Signalr クロスドメイン接続ユーザー認証

シグナルハブを別のドメインでホストしており、メインアプリケーションからハブへのクロスドメイン接続を行っています。ユーザーがメイン アプリケーションにログインすると、シグナル接続が確立されます。今、私が抱えている問題は、ハブ内の接続ユーザーを識別する方法です。HUb がメイン アプリケーション内にある場合は、ログインしているユーザーの UserContext を使用して辞書 (MessengR アプリの例) を維持し、Connect および Disconnect イベントでそれらを更新できます。

しかし、クロスドメイン接続であるため、UserContext がなく、その接続 ID が誰のものであるかを知る方法がありません。私はここで迷っています。Connect() イベントでクライアントからクエリ文字列を渡すことは可能ですか? 追跡に使用できるユーザーを識別するためのトークンがあります。または、ユーザーを接続 ID にリンクする他の方法。誰かが私に指示を与えることができれば。ありがとう!

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

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 をエンコードしていることがわかります。しかし、これはあるページでのみ発生しており、別のページでは期待どおりに機能します。