websocket 的封装
参考文章: 掘金的一篇(但是好像不是工作中用的,大部分代码还是非常有参考意义的)
CSDN 的一篇使用Promise封装的,基本思路很对,但是代码不太完善
[告别屎山!!!WebSocket 的极致封装, 写好代码竟如此简单]https://juejin.cn/post/7220236377937559589
参考项目:
vueuse的useWebSocket
预期功能
- 断网重连
- 断线重连
- 超时重连
- 消息超时
- 心跳检测
- 超时重发
初步的设计思路
设计模式使用:
单例模式:就是使用类似于 Vuex 的全局状态管理 原型模式:就是一些交互的方法可以直接卸载原型中,直接调用即可
要点设计:
每个消息有一个唯一的id来进行区分,放到 Map 里面,然后消息回来的时候根据id 进行 resolve 或者 reject,最后从Map中进行删除,防止占用内存