关于useWebsocket的思考

今天来讲讲useWebsocket的bug

关于vueuse中useWebsocket的问题

发现bug背景

由于项目比较复杂,websockt不能一直连着,而且当某个字段变了之后,需要将原来的关闭并且新开一个socket。然后我发现如果url改变了,会有一条socket一直连着,也不能关闭也不能操作。

结论

经过我的多次测试以及查看源代码,我发现应该是 autoReconnect: true,所以在url改变时他会触发重新链接,但是由于url变了,所以那条socket会一直连着,无法关闭。

我已经向vueuse提交了issues,不知道anft大神会不会看到我提交的bug并修复,有点小兴奋。

最后附上issues地址: useWebsocket

2024.1.30 最新结论

在设置 immediatefalse并且 autoReconnecttrue之后,如果url是ref或computed的,在改变之后不会先将之前的ws先关闭再开启新的ws,这就导致这样设置之后ws会越来越多,我提交了pr修复此bug,但至今仍未合并。可以看下我是如何修复的

1
2
3
4
5
6
7
watch(urlRef, () => {
if (immediate)
open()
else
close()
}, { immediate: true })

原本的代码:

1
2
if (immediate)
watch(urlRef, open, { immediate: true })

附上pr地址: useWebsocket


关于useWebsocket的思考
https://garlandqian.github.io/2023/09/01/vueuse/关于useWebsocket的bug/
作者
Garland Qian
发布于
2023年9月1日
许可协议