✨ WebRTC signaling heartbeat
This commit is contained in:
@@ -57,6 +57,7 @@ class WebRTCSignaling {
|
||||
final StreamController<WebRTCWelcomeMessage> _welcomeController =
|
||||
StreamController<WebRTCWelcomeMessage>.broadcast();
|
||||
WebSocketChannel? _channel;
|
||||
Timer? _heartbeatTimer;
|
||||
|
||||
Stream<SignalingMessage> get messages => _messageController.stream;
|
||||
Stream<WebRTCWelcomeMessage> get welcomeMessages => _welcomeController.stream;
|
||||
@@ -88,6 +89,9 @@ class WebRTCSignaling {
|
||||
}
|
||||
await _channel!.ready;
|
||||
|
||||
// Start heartbeat timer
|
||||
_heartbeatTimer = Timer.periodic(const Duration(seconds: 30), (timer) => _sendHeartbeat());
|
||||
|
||||
_channel!.stream.listen(
|
||||
(data) {
|
||||
final dataStr =
|
||||
@@ -196,7 +200,15 @@ class WebRTCSignaling {
|
||||
);
|
||||
}
|
||||
|
||||
void _sendHeartbeat() {
|
||||
if (_channel == null) return;
|
||||
talker.info('[WebRTC Signaling] Sending heartbeat');
|
||||
final packet = WebSocketPacket(type: 'heartbeat', data: null);
|
||||
_channel!.sink.add(jsonEncode(packet.toJson()));
|
||||
}
|
||||
|
||||
void disconnect() {
|
||||
_heartbeatTimer?.cancel();
|
||||
_channel?.sink.close();
|
||||
_messageController.close();
|
||||
_welcomeController.close();
|
||||
|
||||
Reference in New Issue
Block a user