SignalR客户端HubConnection停止

时间:2017-02-16 06:59:06

标签: client signalr

我在SignalR客户端停止连接时遇到恶意问题。

这里我们使用我的代码。

我开始用简单方法连接

private void Initialize()
    {
        var hermesHubAddress = ConfigurationManager.AppSettings["HermesUrl"];
        _hubConnection = new HubConnection(hermesHubAddress)
        {
            Credentials = CredentialCache.DefaultCredentials
        };

        _hubProxy = _hubConnection.CreateHubProxy("HermesHub");
        _hubProxy.On<Notification>("Notify", Recieve_Message);
        _hubConnection.Start().Wait();
        _hubConnection.Error += HubConnectionOnError;
        _hubConnection.StateChanged += HubConnectionOnStateChanged;
    }

然后当客户端执行关闭连接的操作时

public void Stop()
    {
        _hubConnection.Stop();
        _hubConnection.Dispose();
    }

事件列表器注意到连接状态已更改并已调用操作

private void HubConnectionOnStateChanged(StateChange stateChange)
    {
        if (stateChange.NewState == ConnectionState.Connected)
        {
            if (ConnectionEvent != null)
                ConnectionEvent.Invoke(true);
        }
        else
        {

            if (ConnectionEvent != null)
                ConnectionEvent.Invoke(false);
        }
    }

一切正常,客户端断开连接但是当SignalR服务器以某种方式广播消息_hubProxy自动连接到服务器并获得响应。

1 个答案:

答案 0 :(得分:0)

如果要发送多条消息,SignalR将尝试将它们分组发送到一个有效负载中。这就是M是数组的原因(您可以在my post中找到有关SignalR协议的更多信息)。

SignalR每次轮询只能发送一条消息。由于客户端需要为一个轮询创建新的HTTP请求,因此轮询可能非常慢。如果您收到的邮件速度快于民意调查之间的时间间隔,那么如果您每次轮询只发送一封邮件就会无法跟上,并且您将开始丢失邮件。