SignalR OnConnected未调用,从.NET客户端

时间:2016-03-31 12:35:22

标签: c# .net signalr

我使用SignalR并拥有一个Hub,我已经覆盖了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方法?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用StateChanged这样的事件:

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

您将收到ConnectingConnected个州

答案 1 :(得分:1)

就我而言,问题是Autofac。我以自己的方式设置它(由于我在使用SignalR之前设置了WCF双工的方式)。但遵循the docs非常重要。即使建立了连接,并且我的客户端收到了数据,我也从未输入OnConnected方法。按照文档后,我调用了该方法。