在項目中,背景為了其實把處理結果主動推送個前端,是以使用了WebSocket。
但是問題來了,頁面每跳轉一次,socket都要重新關閉建立連接配接。這個資源消耗是很大的,而且線上環境随着并發量的增加會報錯是以影響性能。
那麼如何保持socket的長連接配接了,用iframe就行了。
如下新增一個模闆頁面,把原來的首頁位址給他,其他都不變。
<iframe id="aframe" name="aframe" src="${contextPath}/project/shop/index" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="100%"></iframe>
這樣頁面每次跳轉都有一個父級頁面,把 socket 的 js 檔案在這個頁面引入就可以了。同時子頁面的跳轉位址在浏覽器位址欄不顯示。
當然你得考慮使用iframe帶來的樣式問題,反向代理預設的60S連接配接逾時問題。否則60S内沒有消息推送,這個連接配接照樣會斷開。