start method

Future<HttpServer> start()

Starts the websocket server.

Implementation

Future<HttpServer> start() {
  final handler = webSocketHandler((dynamic webSocket) async {
    assert(webSocket is WebSocketChannel);
    final wch = webSocket as WebSocketChannel;
    final cli = await makeClient(wch);

    unawaited(wch.sink.done.then((dynamic e) => remove(cli)));
    add(cli);
    _ctrlClient.add(cli);
  });

  return shelf_io.serve((shelf.Request sock) async {
    if (sock.url.path == 'heartbeat') {
      return shelf.Response(await checkHeart() ? 200 : 500);
    }

    return handler(sock);
  }, _host ?? '127.0.0.1', port!).then((server) {
    logger.info('Serving at ws://${server.address.host}:${server.port}');

    return _server = server;
  });
}