WebSocket 是一种基于 TCP 协议的双向通信协议,可以在客户端和服务器之间创建持久性连接。当 WebSocket 连接断开后,我们可以通过一些方法来实现自动重新连接。
以下是一个简单的实现方式:
let websocket = null;
function createWebSocket() {
// 创建新的 WebSocket 实例
websocket = new WebSocket('ws://localhost:8080');
// 监听 WebSocket 连接状态变化事件
websocket.onopen = function () {
console.log('WebSocket connected');
};
websocket.onclose = function () {
console.log('WebSocket disconnected');
// 关闭旧的 WebSocket 实例并重新创建一个新的实例
websocket.close();
setTimeout(function () {
createWebSocket();
}, 3000); // 设置重连间隔时间为3秒钟
};
websocket.onerror = function () {
console.log('WebSocket error occurred');
// 发生错误时也需要关闭旧的 WebSocket 实例并重新创建一个新的实例
websocket.close();
setTimeout(function () {
createWebSocket();
}, 3000);
};
}
createWebSocket(); // 第一次创建 WebSocket
// 在需要发送消息时使用该方法
function sendMessage(message) {
if (websocket && websocket.readyState === WebSocket.OPEN) {
websocket.send(JSON.stringify(message));
}
}
上述代码中,在 createWebSocket 函数内部创建了一个新的 WebSocket 实例,并监听其连接状态变化事件。当发生断开连接或错误时,关闭当前 WebSocket 实例,并在指定时间(这里设置为3秒)后再次调用 createWebSocket 方法,以创建新的 WebSocket 实例进行重新连接。
在需要发送消息时,我们可以使用 sendMessage 函数来发送消息。该函数先判断当前 WebSocket 实例是否存在并且状态为打开状态,如果是,则调用 send 方法发送消息。
注意,在实际应用中,我们需要根据具体情况设置合适的重连间隔时间,并对 WebSocket 连接错误进行处理。此外,还需要考虑到断线重连可能会导致数据丢失或者重复的问题。因此,我们需要在服务器端和客户端之间制定好协议并正确处理数据同步问题。




