start method

Future<bool> start()

Starts the server. Returns true if the server was started successfully.

Implementation

Future<bool> start() async {
  HttpServer httpServer;
  try {
    if (securityContext != null) {
      httpServer = await HttpServer.bindSecure(
        InternetAddress.anyIPv6,
        port,
        securityContext!,
      );
    } else {
      httpServer = await HttpServer.bind(InternetAddress.anyIPv6, port);
    }
  } catch (e) {
    stderr.writeln(
      '${DateTime.now().toUtc()} ERROR: Failed to bind socket, port $port '
      'may already be in use.',
    );
    stderr.writeln('${DateTime.now().toUtc()} ERROR: $e');
    return false;
  }

  try {
    _runServer(httpServer);
  } catch (e, stackTrace) {
    stderr.writeln(
        '${DateTime.now().toUtc()} Internal server error. Failed to run server.');
    stderr.writeln('$e');
    stderr.writeln('$stackTrace');
    return false;
  }

  _running = true;
  stdout.writeln('$name listening on port $port');
  return _running;
}