【问题标题】:SignalR client HubConnection StopSignalR 客户端 HubConnection 停止
【发布时间】:2017-02-16 06:59:06
【问题描述】:

我在 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 自动重新连接到服务器并获得响应。

【问题讨论】:

    标签: client signalr


    【解决方案1】:

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

    SignalR 不能每次轮询只发送一条消息。轮询可能真的很慢,因为客户端需要为一次轮询创建一个新的 HTTP 请求。如果您收到消息的速度快于轮询之间的间隔,如果您每次轮询只发送一条消息,您将无法跟上,您将开始丢失消息。

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 2016-01-13
      • 1970-01-01
      • 2020-04-27
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多