start method

Future<bool> start()

Implementation

Future<bool> start() async {
  final success = await wsConnect();
  if(!success) {
    return false;
  }

  final completer = Completer<bool>();

  Future.delayed(const Duration(seconds: 10), () { // timeout
    print ("completer.isCompleted #3: ${completer.isCompleted}");
    if (!completer.isCompleted) {
      logger("Could not connect the websocket, because of the timeout of 10 seconds");
      completer.complete(false);
    }
  });

  print ("completer.isCompleted #1: ${completer.isCompleted}");

  wsListen((data) {
    _lastPongFromServer = DateTime.now().millisecondsSinceEpoch;

    if (!completer.isCompleted) {
      completer.complete(true);
    }

    ClientReceived.from(data).handle();

  }, onError: (err) {
    logger("middleware: channel.stream.listen onError", level: Level.error, additionalData: err.toString());
  }, onDone: () {
    _handleConnectionClosed();
    if (!completer.isCompleted) {
      completer.complete(false);
    }
  });

  wsHandleError((err) {
    logger("channel handleError", additionalData: err, level: Level.error);
  });

  return completer.future;
}