js 使用 new WebSocket 如何重链和销毁
时间: 2024-09-10 10:06:12 浏览: 23
在JavaScript中,`WebSocket` 提供了一种创建持久连接并进行全双工通信的方式。创建一个新的`WebSocket`连接很简单,使用`new WebSocket(url)`即可。然而,所谓的“重链”可能是指重新连接一个已经关闭或断开的`WebSocket`连接。要实现这一点,你可以在`WebSocket`对象的`onclose`事件处理函数中重新调用`new WebSocket(url)`。下面是一个简单的例子:
```javascript
var ws = new WebSocket('wss://example.com/socket');
// 连接打开时触发
ws.onopen = function() {
// 发送消息
ws.send('Hello Server!');
};
// 接收到消息时触发
ws.onmessage = function(event) {
console.log('Message from server ', event.data);
};
// 连接关闭时触发
ws.onclose = function() {
console.log('WebSocket Connection is closed');
// 重新连接
setTimeout(() => {
ws = new WebSocket('wss://example.com/socket');
// 重新设置事件监听
ws.onopen = function() {
// 重新打开连接后的逻辑
};
ws.onmessage = function(event) {
// 处理消息
};
ws.onclose = function() {
// 处理连接关闭
};
}, 1000); // 延迟1秒后尝试重连
};
// 发生错误时触发
ws.onerror = function(error) {
console.log('WebSocket error:', error);
};
```
至于“销毁”`WebSocket`连接,通常意味着关闭该连接。调用`ws.close()`方法即可关闭`WebSocket`连接。关闭连接后,`WebSocket`对象上的事件监听器将不再被触发。如果尝试在关闭的连接上调用`ws.send()`,将会抛出异常。因此,关闭连接后,应该将`WebSocket`对象设置为`null`以表示不再使用,并且防止内存泄漏。
```javascript
function closeWebSocket(ws) {
if (ws && ws.readyState === WebSocket.OPEN) {
ws.close(); // 关闭连接
}
ws = null; // 清空引用
}
```
阅读全文