[英]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
}
}
您將收到Connecting
和Connected
狀態
就我而言,問題是Autofac。 我已經按照自己的方式進行了設置(由於使用SignalR之前已經設置了WCF雙工)。 但是遵循文檔很重要。 即使建立了連接,並且我的客戶端接收到數據,我也從未輸入過OnConnected
方法。 在遵循文檔之后,我調用了該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.