在项目中,后台为了其实把处理结果主动推送个前端,因此使用了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内没有消息推送,这个连接照样会断开。