簡體   English   中英

從.NET客戶端連接時未調用SignalR OnConnected

[英]SignalR OnConnected not called, connecting from .NET client

我使用的是SignalR,並且有一個集線器,其中我覆蓋了OnConnected方法。 原因是,服務器每60秒發布一次數據。 但是,當有新的客戶端連接時,我想立即發布數據。

以簡化形式:

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

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

永遠不會調用OnConnected方法(我通過調試進行了測試)。 我已經在多個地方(如here )中閱讀到,客戶端需要具有連接的處理程序,例如:

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

但是,我有一個WPF客戶端,因此在.NET中,除了已經處理的事件之外,我還嘗試添加它:

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

這沒有幫助。 但是我確實有連接,因為一段時間后,我開始接收數據。

有什么我想念的嗎? 當.NET客戶端連接時,如何讓SignalR調用OnConnected方法?

您可以嘗試使用StateChanged事件,如下所示:

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

您將收到ConnectingConnected狀態

就我而言,問題是Autofac。 我已經按照自己的方式進行了設置(由於使用SignalR之前已經設置了WCF雙工)。 但是遵循文檔很重要。 即使建立了連接,並且我的客戶端接收到數據,我也從未輸入過OnConnected方法。 在遵循文檔之后,我調用了該方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM