我在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自动连接到服务器并获得响应。
答案 0 :(得分:0)
如果要发送多条消息,SignalR将尝试将它们分组发送到一个有效负载中。这就是M
是数组的原因(您可以在my post中找到有关SignalR协议的更多信息)。
SignalR每次轮询只能发送一条消息。由于客户端需要为一个轮询创建新的HTTP请求,因此轮询可能非常慢。如果您收到的邮件速度快于民意调查之间的时间间隔,那么如果您每次轮询只发送一封邮件就会无法跟上,并且您将开始丢失邮件。