2016-03-31 28 views
0

私はSignalRを使用しており、OnConnectedメソッドを上書きしたハブを持っています。理由は、サーバーが60秒ごとにデータを公開するためです。しかし、新しいクライアントが接続するとすぐにデータを公開したいと考えています。SignalR OnConnectedが呼び出されていない、.NETクライアントから接続する

簡略化した形で:

public class CustomerPublisher : Hub 
{ 
    public void Publish(Customer customer) 
    { 
     Clients.All.receive(customer); 
    } 

    public override Task OnConnected() 
    { 
     return base.OnConnected(); 
    } 
} 

OnConnected方法は、(私がデバッグによってテスト)と呼ばれることはありません。の上に、しかし、私はWPFのクライアントを持っているので、.NETで、私はこれを追加しようとした

$.connection.onlineHub.client.connected = function(){...} 

:私は、クライアントは次のように、接続ハンドラを持っている必要があるといくつかの場所(hereのような)で読みました私がすでに扱っていたイベント:

hubProxy.On<object>("receive", OnCustomerReceived); // this line was already present 
hubProxy.On<object>("connected", OnConnected); // I added this 

これは役に立たなかった。しかし、私は接続している、いくつかの時間の後、私はデータを受信し始めます。

紛失しているものはありますか? .NETクライアントの接続時にOnConnectedメソッドを呼び出すには、どうすればSignalRを呼び出すことができますか?

+0

Peterこの他の質問はあなたの問題とは関係ありません(クライアント側ではサーバー側で通知しようとしています)。接続が必要です。 OnReconnected OnDisconnectedも追加して再度デバッグできますか?また、CustomerPublisherハブに接続したコードを表示することもできます。 –

+0

OnReconnectedとOnDisconnectedはどちらも呼び出されません。私はAutofacを使用しているという事実に起因しているはずだと思っています。私はドキュメントのようにそれをやっていません。私は自分のコードを書き直して、Autofacをドキュメントのように使用し、それが何を提供しているかを見ていきます。私ははっきりとつながっているので、私はそれが奇妙に感じます。 – Peter

答えて

1

あなたはこのようStateChangedイベントを使用しようとすることができます:

Connection.StateChanged += Connection_StateChanged; 
void Connection_StateChanged(StateChange obj) 
{ 
    if (obj.NewState == ConnectionState.Connected) 
    { 
      //do somethign here 
    } 
} 

あなたは私の場合はConnectingConnected状態

+0

さて、私はすでにそれをやっています。私はクライアントがサーバー側でいつ接続するかを知ろうとしています。 – Peter

+0

ああ、私はこのライト[プロジェクト](https://code.msdn.microsoft.com/windowsdesktop/Using-SignalR-in-WinForms-f1ec847b)をダウンロードし、オーバーライドタスクのOnConnected()は、 wpfクライアント。 –

+0

あなたのリンクを貼り付けるコピーが機能していないように見えるので、同じ問題を抱えている人は、[こちら](https://code.msdn.microsoft.com/windowsdesktop/Using-SignalR-in- WinForms-f1ec847b)。私は今それをダウンロードしており、それをチェックアウトします。 – Peter

1

を受けるでしょう、問題がAutofacました。私は自分のやり方でセットアップしました(私がSignalRを使用する前にWCF二重化をセットアップした方法のせいで)。しかし、the docsに従うことが重要です。接続が確立され、クライアントがデータを受け取ったとしても、私はOnConnectedメソッドを入力したことはありません。ドキュメンテーションに続いて、メソッドが呼び出されました。

関連する問題