いくつかの SignalR Hubs とそれらのいくつかの個別の OnDisconnected イベントを設定しようとしています。
質問のために、いくつかのページに 2 つのハブがあります。
StatusHub: Web サイトでのユーザーのステータスを処理します。このハブのメソッドは Web サイトのすべてのページで呼び出され、ユーザーの接続と切断のロジックを処理して、ユーザーが Web サイトをナビゲートするときにユーザーの状態を更新します。
ChatHub: Web サイトのリアルタイム チャットに関連するすべてを処理します。このハブのメソッドは、ユーザーが特定のボタンをクリックしたときに、Web サイトの特定のページからのみ呼び出されます。
私が経験している問題は、両方のハブ クラスが独自のバージョンの OnConnected メソッドと OnDisconnected メソッドを実装しているにもかかわらず、StatusHub メソッドのみが起動され、ChatHub メソッドが呼び出されないことです。
それが仕様によるものなのか、それとも何か間違っているのかはわかりません。これまでのところ、ハブサーバーへの接続は単一の接続であり、特定のハブには接続せず、ハブサーバー全体に接続するため、メソッドの1つだけに接続するという記事と回答をいくつか読みました認識され、呼び出されます。
SignalR の経験が豊富な方は、2 つのハブの接続イベントと切断イベントを分離する方法があるかどうか、またはそれが本当に意図されているかどうかを教えてもらえますか?
シナリオをよりよく説明するために、いくつかのコードを以下に示しますが、さらにコードを見る必要がある場合は、質問して追加します.
StatusHub.cs
public class StatusHub : Hub {
public override Task OnDisconnected()
{
//handles the disconnected event as needed
return base.OnDisconnected();
}
public override Task OnConnected()
{
//handles the connected event as needed
return base.OnConnected();
}
}
ChatHub.cs
public class ChatHub : Hub {
public override Task OnDisconnected()
{
//should handle the chat disconnected event but is never reached
return base.OnDisconnected();
}
public override Task OnConnected()
{
//should handle the chat connected event but is never reached
return base.OnConnected();
}
}
ハブ サーバー接続を開始するコード (すべてのページで実行):
$.connection.hub.start().done(function() {
//a lot of code here (irrelevant to the question I think)
});