WebSocket 心跳实现
在 WebSocket 通信中,客户端和需要定期发送心跳消息来保持连接活跃。心跳机制可防止连接因网络中断或不活动而超时关闭。以下代码实现了 WebSocket 心跳的完整实现:
WebSocket 心跳实现
WebSocket 心跳实现
客户端 JaScript 代码:
```jascript const ws = new WebSocket('ws://localhost:8080');
// 发送心跳消息 const heartbeatInterval = setInterval(() => { ws.send('{"type": "heartbeat"}'); }, 5000); // 每 5 秒发送一次
// 在接收到心跳响应时重置心跳间隔 ws.addEventListener('message', (nt) => { const data = JSON.parse(nt.data); if (data.type === 'heartbeat-response') { clearInterval(heartbeatInterval); heartbeatInterval = setInterval(() => { ws.send('{"type": "heartbeat"}'); }, 5000); } }); ```
端 Python 代码(使用 Flask-SocketIO):
```python from flask import Flask, request from flask_socketio import SocketIO
app = Flask(__name__) socketio = SocketIO(app)
@socketio.on('message') def handle_message(message): if message['type'] == 'heartbeat': socketio.emit('heartbeat-response', {'type': 'heartbeat-response'})
if __name__ == '__main__': socketio.run(app) ```
在此实现中,客户端每 5 秒发送一次心跳消息,并使用 JSON 格式来标识消息类型。端使用 Flask-SocketIO 处理来自客户端的心跳消息,并在收到时发送响应。
工作原理:
客户端定期发送心跳消息,并预设一个超时时间。 如果端在超时时间内接收到心跳消息,则会重置客户端的心跳间隔,并发送心跳响应消息。 如果端在超时时间内没有接收到心跳消息,则会关闭连接。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。