JSON.stringify(ws) 为{}了
时间: 2023-07-08 08:10:34 浏览: 334
这是因为WebSocket对象是无法被序列化的。您可以尝试将WebSocket对象的一些属性和方法提取出来进行存储,然后在需要使用WebSocket对象时再重新创建一个WebSocket对象。
以下是一个示例代码:
```javascript
// 创建WebSocket对象
var ws = new WebSocket('ws://localhost:8080');
// 将WebSocket对象的url、protocol等属性存储到localStorage中
localStorage.setItem('ws_url', ws.url);
localStorage.setItem('ws_protocol', ws.protocol);
// 将WebSocket对象的方法存储到localStorage中
localStorage.setItem('ws_onopen', ws.onopen.toString());
localStorage.setItem('ws_onmessage', ws.onmessage.toString());
localStorage.setItem('ws_onclose', ws.onclose.toString());
localStorage.setItem('ws_onerror', ws.onerror.toString());
// 从localStorage中获取WebSocket对象的属性和方法
var ws_url = localStorage.getItem('ws_url');
var ws_protocol = localStorage.getItem('ws_protocol');
var ws_onopen = eval(localStorage.getItem('ws_onopen'));
var ws_onmessage = eval(localStorage.getItem('ws_onmessage'));
var ws_onclose = eval(localStorage.getItem('ws_onclose'));
var ws_onerror = eval(localStorage.getItem('ws_onerror'));
// 创建一个新的WebSocket对象
var ws = new WebSocket(ws_url, ws_protocol);
ws.onopen = ws_onopen;
ws.onmessage = ws_onmessage;
ws.onclose = ws_onclose;
ws.onerror = ws_onerror;
```
需要注意的是,使用eval()函数可以将字符串转换为函数。但是,eval()函数存在安全隐患,因此需要谨慎使用。
阅读全文