disconnect method
Leaves the session and forgets its screen.
Implementation
Future<void> disconnect() async {
_generation++;
await _subscription?.cancel();
_subscription = null;
await _channel?.sink.close();
_channel = null;
resources.clear();
_frame = null;
_setStatus(RemoteViewerStatus.idle);
}