1

SignalR を使用していますが、問題が発生しました。1 つのブラウザー ウィンドウで接続が開始され、ユーザーが別のブラウザー ウィンドウにログインすると、ユーザー ID が変更されます (これにより、「System.InvalidOperationException: 認識されていないユーザー ID。アクティブな SignalR 接続中にユーザー ID を変更することはできません」というエラーが発生します)ハブでメソッドが呼び出されたときのサーバー。

クライアントでこのコードを使用しています:

proxy.server.analyze(content)
.done(function () {
    console.log('Success!');
})
.always(function () {
    console.log('This is always called!');
})
.fail(function (error) {
    console.log('This is never called!');
});

サーバーでエラーが発生した場合、fail 関数が呼び出されないため、クライアントでこの問題を処理して接続を停止および開始する方法がないように見えます。

このケースを処理する「ベストプラクティス」の方法はありますか? 別のブラウザー ウィンドウでユーザー ID が変更されたことをクライアントで検出し、接続を停止して再開するにはどうすればよいですか?

4

1 に答える 1

1

これは既知の問題です。

次のリリースで修正されます。問題を修正することになった問題は次のとおりです: https://github.com/SignalR/SignalR/issues/2106

最後に、次のリリース (0.2.0) では、接続がエラーをスローして停止します。したがって、エラーハンドラーを介してケースを処理するか、もちろん「切断」イベントに関連付けることができます。

プレリリースを試してみたい場合は、いつでも公式ソースまたは webstack ナイトリー ( http://www.myget.org/F/aspnetwebstacknightly/ )から取得できます。

于 2013-08-23T08:48:07.920 に答える