我按照accessToken那个逻辑,想要JSON.strigify(websocket object),但是序列化之后是一个空对象。
我想问一下,是不是websocket object是不准许被serilized的?我看到网上有帖子说这个东西就是这么设计的,不能像普通的Object那样被序列化。
那么如果确实这个东西不可以像access_token那样被序列化然后存在localStorage里面被重复使用,那么这种情况下的最佳实践是什么,每次使用的时候都要从新connect?
我按照accessToken那个逻辑,想要JSON.strigify(websocket object),但是序列化之后是一个空对象。
我想问一下,是不是websocket object是不准许被serilized的?我看到网上有帖子说这个东西就是这么设计的,不能像普通的Object那样被序列化。
那么如果确实这个东西不可以像access_token那样被序列化然后存在localStorage里面被重复使用,那么这种情况下的最佳实践是什么,每次使用的时候都要从新connect?
WebSocket对象不能被直接序列化,这是由于WebSocket对象包含了大量的内部状态和连接信息,这些信息在序列化过程中无法被完全保存。序列化通常只能保存对象的结构和属性,但对于WebSocket对象来说,最重要的信息是在连接过程中的状态和事件处理函数等,这些都是无法通过序列化来保存的。
确实,如你所说,WebSocket对象不是设计用来被序列化的。如果你希望保存WebSocket连接的一些信息,一般的做法是设计自己的协议,通过WebSocket连接来传递这些信息。
对于你提到的想将WebSocket对象存储在localStorage中并在需要时重复使用,这并不推荐。由于WebSocket对象不能被序列化,你无法将其完整地保存到localStorage中。即使你尝试只保存一些属性,如URL、端口等,但由于WebSocket对象的内部状态无法保存,所以每次使用时都需要重新创建WebSocket连接。
对于这种情况,最佳的实践可能如下:
然而,上述两种方法都有其各自的限制和缺点,你可能需要根据实际情况选择最合适的方法。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
哪怕只是页面休眠,都会导致会话停止,更不要说关闭页面了,所以想存起来日后再用是不可能的,只能每次需要的时候重连。
把socket连接的 url 等信息记下来,保存到本地,下次进网页的时候重新初始化就行了。