2012-03-12 7 views
1

SignalRが正常に実装されました。クライアントがナビゲート中にSignalRメッセージが失われる

私はこれを使ってサイトのユーザー間の初期会話を表示するので、誰かとチャットしたいときは、SignalRを使用して簡単なメッセージが送信されます。

これは1つの状況を除いてうまくいきます。リクエストを受信すると同時にリクエストが送信された場合、サイトをナビゲートするような新しいページ要求が行われている場合、メッセージは失われます。

InProcMessageBusで30秒後にメッセージが期限切れになることがわかりましたが、マシンでテストしているため、最大で1〜2秒かかるため、問題ではないと思います。

これは実際には設計によるものですか?それとも間違っているのですか?

ありがとうございました。

+0

私は混乱しています。受信していないメッセージが送信されるとすぐにリフレッシュすると言っていますか? – davidfowl

+0

私は実際にはメッセージがクライアントに送信されたと考えています。ハブへのイベントは決して解雇されないようなものです。ブラウザは既にページをリロードするモードになっています。 、クライアントはメッセージを取得していない、オフコース。私はあなたがそれが設計によるものであることを明確にしたと思います。だから私はまた、サーバー上のメッセージを追跡する必要があります。とにかくありがとう。 –

答えて

2

これは設計によるものです。ユーザーが新しい接続を作成すると、デフォルトで新しいclientidが取得されます。あなた自身がIConnectionIdFactoryを定義していない限り、これは問題の原因である可能性があります。あなたは、クライアントが常に同じIDを取得することを確認したい場合は、この独自の実装を作成し、このようにそれを設定します:SignalRで

DependencyResolver.Register(typeof(IConnectionIdFactory),() => new CustomIdFactory()); 

拡張 - クライアントIDのためのhttps://github.com/SignalR/SignalR/wiki/Extensibility

例工場の交換:http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/

+0

答えをありがとう。 申し訳ありませんが、私はこの問題については言及していませんでしたが、私はすでにそれを行いました。私はログインしているユーザーのIDを使用して、fiddlerを介して要求を見て、私はconnectionIdが同じユーザーからのすべての要求に対して同じであることがわかります。 実際、私の問題は依然として続きます。私の独自の接続IDを使用しています。 –

関連する問題