oa项目经验描述_项目经验总结

本文总结了在ie浏览器下,前端开发遇到的WebSocket安全限制问题及其解决办法,包括避免多个WebSocket连接和利用事件通信共享一个WebSocket服务。此外,还探讨了HUI多语言使用时的更新问题,提出了解决方案,以及动态加载资源的优化策略,如使用async、await确保同步加载。最后,文章提到了门户看板小部件打包和上传组件时的常见问题及应对策略。
摘要由CSDN通过智能技术生成

项目中前端开发问题经验总结

ie下websocket的安全限制问题

问题描述:

数据看板中的数据大部分都是实时数据或前一天统计的历史数据,因此这边后端考虑采用websocket来实时和定时推送数据来保证数据的实时性和有效性。而前端开发这边为了提高前端开发的复用性,采用了在各个组件中开发成一个个的小部件,然后在门户通过vue异步动态加载的方式来实现,小部件的组装拼接。 因此在组件中开发的小部件都是单vue页面。因此出现了有几个小部件就有几个websocket,目前我这边就出现了7个websocket。

问题现象:

在ie浏览器下,打开时就会发现报错。IE控制台会报SecurityError错误。

解决方法:

造成上述现象的原因是ie下websocket连接做了安全限制,如果websocket连接超过6个时,那么就会连接失败。默认最大连接数为6个。

那么如何避免报错呢?

当然ie下的限制我们是不好修改的,如果真的强制修改,那么可以通过修改注册表来修改最大连接数(当然这边是不建议的,不可能让客户区修改浏览器注册表的)。

那么我们需要的就是避免多个websocket的连接。

2个思路:

使用websocket之前先思考,是否真的有必要使用wesocket??

如果是实时推送,定时推送这些场景,那么完全没有必要使用websocket,前端可通过定时器来实现相同的功能。因此能避免使用就避免使用。

如果是报警等未知的推送,那么我们就是必须要使用websocket的,而且如果正好应用在了看板小部件上。那么还是会出现7个websocket的情况。所以这种情况下就需要和后端沟通,一个项目采用一个websocket服务,通过type来区分。那么看板就只有一个websocket了。可是现在看板的小部件都是独立,如何去实现一个websocket?那么需要借助一下事件通信。如下:

a.vue

created () {

this.$root.eventBus = new Vue()

this.init()

},

methods: {

init (i) {

let ws = new WebSocket()

ws.onmessage = (data) => {

this.$root.eventBus.$emit('websocket', data)

}

}

}

b.vue

created () {

this.$root.eventBus.$on('websocket', () => {

// 处理推送的数据

})

}

我们知道我们的小部件都是通过在门户,通过vue动态加载组件的方式来形成看板的,那么所以小部件就都会在门户这个vue实例对象下。所以可以采用this.$root下挂在一个vue实例来实现事件的传递

备注&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值