connect method

void connect()

Implementation

void connect() {
  if (_baseURL == null) {
    return;
  }

  String urlString = _baseURL!;
  if (urlString.startsWith("https://")) {
    urlString = urlString.replaceFirst("https://", "wss://");
  } else if (!urlString.startsWith("wss://")) {
    urlString = "wss://$urlString";
  }

  try {
    final uri = Uri.parse(urlString);

    final headers = {
      'Origin': 'https://api.bynn.com',
    };

    if (_sessionToken != null) {
      headers['Authorization'] = 'Bearer $_sessionToken';
    }

    // Connect with the proper headers applied
    _channel = IOWebSocketChannel.connect(
      uri,
      headers: headers,
    );

    _subscription = _channel!.stream.listen(
      _onMessage,
      onError: (error) {
        _scheduleReconnect();
      },
      onDone: () {
        if (state.isConnected) {
          _scheduleReconnect();
        }
      },
    );

    _startPingTimer();

    state = state.copyWith(
      isConnected: true,
      connectionFailed: false,
    );

  } catch (e) {
    _scheduleReconnect();
  }
}