[.Net 5.0] 7.SignalR 使用的姿勢


前文[https://www.cnblogs.com/catzhou/p/14048348.html](6.SignalR 連接數量的限制),抱怨了只能連接5000個客戶端,期間還找了很多辦法,試圖突破五千的限制。

其實是忘了實時連接是一個奢侈的東西,應該是在需要的時候連接上,在不需要的時候盡快短線離開。
https://docs.microsoft.com/zh-cn/aspnet/core/signalr/configuration?view=aspnetcore-5.0有:

配置服務器選項:

ClientTimeoutInterval 30 秒 如果客戶端未收到消息 (在此時間間隔內包含 keep-alive) ,服務器將認為客戶端已斷開連接。 由於實現方式的原因,客戶端實際標記為斷開連接可能需要更長的時間。 建議值為值的兩倍 KeepAliveInterval 。

KeepAliveInterval 15 秒 如果服務器未在此時間間隔內發送消息,則會自動發送 ping 消息,使連接保持打開狀態。 更改時 KeepAliveInterval ,請更改 ServerTimeout / serverTimeoutInMilliseconds 客戶端上的設置。 建議 ServerTimeout / serverTimeoutInMilliseconds 值為值的兩倍 KeepAliveInterval 。

配置客戶端選項:

ServerTimeout 30秒 (30000 毫秒) 服務器活動超時。 如果服務器未在此時間間隔內發送消息,則客戶端會將服務器視為斷開連接,並 Closed onclose 在 JavaScript) 中觸發事件 (。 此值必須足夠大,以便從服務器發送 ping 消息 ,並 在超時間隔內由客戶端接收該消息。 建議值至少為服務器值的兩倍 KeepAliveInterval ,以允許 ping 到達的時間。

KeepAliveInterval 15 秒 確定客戶端發送 ping 消息的間隔。 如果從客戶端發送任何消息,則會將計時器重置為間隔的開始時間。 如果客戶端沒有在服務器上的設置中發送消息 ClientTimeoutInterval ,則服務器會將客戶端視為已斷開連接。

意思就是空閑的時候,服務器每隔15秒向客戶端發送ping消息,客戶端每隔15秒向服務端發送ping消息,如果超時為收到消息,則認為斷線了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM