SignalR KeepAlive vs ConnectionTimeout



在SignalR(1.2.2)中,KeepAlive和ConnectionTimeout之间有什么区别?

如果保持活动状态并主动ping服务器,则连接永远不会超时。那么ConnectionTimeout的意义何在?

我是否将ConnectionTimeout与建立新连接时关联的超时混淆?

我在发布问题后不久就在wiki上找到了答案。当设置KeepAlive时,ConnectionTimeout几乎没有任何作用。

维基说:

ConnectionTimeout-表示在超时之前保持连接打开的时间。默认值为110秒。

KeepAlive-表示在空闲连接上发送保持活动数据包之前等待的时间。设置为null可禁用保持活动。默认情况下设置为30秒。如果启用此选项,ConnectionTimeout将不起作用。

ConnectionTimeout

此设置表示在关闭传输连接并打开新连接之前,保持传输连接打开并等待响应的时间。默认值为110秒。

KeepAlive

此设置表示在空闲连接上发送保活数据包之前等待的时间。默认值为10秒。此值不得大于DisconnectTimeout值的1/3。

KeepAlive也意味着您有一个打开的资源连接。例如,CPU用于每10秒处理一次。KeepAlive不会让服务器丢弃它,并说"是的,我又小又慢,但我还活着,可以给你发包裹"。

ConnectionTimeout可能是相同的,直到重新连接。重新连接可能不会发生。超时后,资源将关闭(连接)并重新打开。ConnectionTimeout会像"好的,给我110秒,我会决定在这段时间内做什么。超时后,如果需要,我们可以再次交谈"。

最新更新