fix dispose triggering onDispose twice
This commit is contained in:
@@ -22,23 +22,24 @@ class LiveKitWebSocketIO implements LiveKitWebSocket {
|
|||||||
]) {
|
]) {
|
||||||
_subscription = _ws.listen(
|
_subscription = _ws.listen(
|
||||||
(dynamic data) => options?.onData?.call(data),
|
(dynamic data) => options?.onData?.call(data),
|
||||||
onDone: () => dispose(),
|
onDone: () async {
|
||||||
|
await _subscription.cancel();
|
||||||
|
options?.onDispose?.call();
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> dispose() async {
|
Future<void> dispose() async {
|
||||||
await _subscription.cancel();
|
if (_ws.readyState != io.WebSocket.closed) {
|
||||||
await _ws.close();
|
await _ws.close();
|
||||||
options?.onDispose?.call();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void send(List<int> data) {
|
void send(List<int> data) {
|
||||||
// 0 CONNECTING, 1 OPEN, 2 CLOSING, 3 CLOSED
|
if (_ws.readyState != io.WebSocket.open) {
|
||||||
if (_ws.readyState != 1) {
|
logger.fine('[$objectId] Socket not open (state: ${_ws.readyState})');
|
||||||
logger.fine(
|
|
||||||
'[$objectId] Tried to send data (readyState: ${_ws.readyState})');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,11 @@ class LiveKitWebSocketWeb implements LiveKitWebSocket {
|
|||||||
dynamic _data = _.data is ByteBuffer ? _.data.asUint8List() : _.data;
|
dynamic _data = _.data is ByteBuffer ? _.data.asUint8List() : _.data;
|
||||||
options?.onData?.call(_data);
|
options?.onData?.call(_data);
|
||||||
});
|
});
|
||||||
_closeSubscription = _ws.onClose.listen((_) => dispose());
|
_closeSubscription = _ws.onClose.listen((_) async {
|
||||||
|
await _messageSubscription.cancel();
|
||||||
|
await _closeSubscription.cancel();
|
||||||
|
options?.onDispose?.call();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -35,10 +39,9 @@ class LiveKitWebSocketWeb implements LiveKitWebSocket {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> dispose() async {
|
Future<void> dispose() async {
|
||||||
options?.onDispose?.call();
|
if (_ws.readyState != html.WebSocket.CLOSED) {
|
||||||
await _messageSubscription.cancel();
|
_ws.close();
|
||||||
await _closeSubscription.cancel();
|
}
|
||||||
_ws.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<LiveKitWebSocketWeb> connect(
|
static Future<LiveKitWebSocketWeb> connect(
|
||||||
|
|||||||
Reference in New Issue
Block a user