2015-09-25 12 views
5

異なるハブに複数のハブを作成し、各ハブに接続すると共有接続で複数のクライアントサイドハブを作成できるため、ハブここで、ハブ・オン接続されたメソッドが各ハブ・サーバー・サイド・コードで呼び出されないという問題が発生します。複数のハブで共有接続を使用するとOnConnectedメソッドが呼び出されない

public class Hub1 : Hub 
{ 
     public override Task OnConnected() 
     { 
      return base.OnConnected(); 

     } 
} 

public class Hub2 : Hub 
{ 
     public override Task OnConnected() 
     { 
      return base.OnConnected(); 

     } 
} 

は、クライアント側で私は、両方のハブに定義されたクライアント側のメソッドとHUB1とHUB2、メソッドは、サーバー側で呼び出されるonConnectedハブを1つだけ作成し、言ってみましょう。別の接続でクライアント側にハブを作成すると、OnConnectedメソッドが呼び出されます。だから、もし私が各ハブに対して同じ接続を使用したいと思っているなら、別のハブのConnectedイベントを発生させたいのであれば、他の方法もあります。

答えて

5

両方のハブにデバッグポイントを設定してテストしましたが、どちらのハブにもサブスクリプションがある限り、両方のハブでOnConnectedが呼び出されます。

はこちらをご覧ください:Can I debug OnConnected method in SignalR Hub?

かいつまん: 設計することにより、あなたはハブへのサブスクリプションを持っていない場合は、JavaScriptクライアントはOnConnectedウォンように、サーバーからのメッセージを取得することはできません呼び出されることはありません。

EDIT

here注部分を参照してください:

注:JavaScriptのクライアントの場合は、接続を確立するために、Startメソッドを呼び出す前に、少なくとも1つのイベント ハンドラを登録する必要があります。

詳細はリンクを参照してください。

+0

ハブ間で接続が共有されている場合でも、 –

+1

はい。これが現在の実装です。クライアントがハブのイベントのいずれかに加入していない場合は、とにかく使用されないハブオブジェクトを作成する必要はありません。これはjavascriptクライアントの場合の動作です。 .NETクライアントは、イベントへのサブスクリプションを持つかどうかに関係なく、常に接続を作成します。私は答えを編集してより多くの情報を提供します。 – DDan

+0

奇妙ですが、良い点です。 – Jacob

関連する問題