【轉】SignalR站點瀏覽器連線數限制分析及解決方案
阿新 • • 發佈:2018-12-12
SignalR 搭建實時重新整理應用雖然非常方便,但是有個問題你必須考慮到,就是一般的瀏覽器,對於SignalR的全雙工通訊方式,絕大多數瀏覽器都只支援6個新視窗,如果你開啟第7個,那麼新的框口頁面是不會載入的。
這其實是客戶端瀏覽器的限制,這是以連線的域名為單位來限制, 如果是最新版本的IE似乎沒有這個限制,但是其他瀏覽器似乎都會存在,可以檢視 browserscope 檢視具體情況。
如果你使用WebSockets的傳輸方式是不會有這個限制,如果有限制就證明你不是使用的WebSockets傳輸方式,但是WebSockets傳輸伺服器需要一定的限制,關於限制你可以檢視SignalR平臺配置要求
對於使用者你永遠都不會知道是否會開啟多餘6個的瀏覽器視窗,對於這種情況只有下面幾個解決方法:
- 不管這個問題,當然這會帶來一定機率的使用者體驗。
- 選擇合適的傳輸方式,解決SignalR連線數的限制,比如使用WebSockets傳輸方法。
- 使用其他第三方商家的解決方案。
-
觀察使用者瀏覽器視窗的開啟數目
- 限制連線數
- 監控啟用的連線
-
通過使用多用域名來繞過這個問題,因為的6個連線的限制是針對每個域名。
我們來分析下解決方案
不管SignalR連線數限制
你需要思考的是誰會開啟6個以上的瀏覽器框口?如果是一個聊天室應用或者單頁面應用完全就可以忽略SignalR連線數限制。
選擇合適的傳輸方式
只有使用WebSockets的傳輸方式才不會有連線數的限制,即時是在老的瀏覽器也不會造成瀏覽器崩潰的情況。
使用第三方專業方案解決SignalR連線數限制
使用一些第三方專業的解決即時通訊的問題,比如可以使用 http://www.lightstreamer.com/。這個連線最大可以支援到2000萬個
通過使用多個域名解決SignalR連線數限制
SignalR瀏覽器的連線限制只是針對一個域名,所以我們可以通過域名來解決:
- 使用另外的域名(你需要解決跨站請求偽造)。
-
使用二級域名(如果你的網站的是HTTPS請求,最好使用泛域名SSL證書)。
以上就是SignalR 站點瀏覽器連線數限制分析及解決方案,你需要針對你的實際情況選擇合適的方法來解決。