Как узнать, что websocket подключен в подписке, прежде чем вызывать какой-либо запрос? - PullRequest
0 голосов
/ 27 февраля 2020

Я использую виджет подписки и как я могу убедиться, что соединение с сервером установлено, и я могу вызвать его в виджете подписки. Я использую этот пакет https://pub.dev/packages/graphql_flutter

вот мое подключение клиента сокета

 link = HttpLink(
      uri:
          'http://staginggraphql*********************,
      headers: <String, String>{
        'x-token': centralstate.GraphQLToken,
      },
    );

    socketLink = WebSocketLink(
      url: 'ws://staginggraphql*********************,
      config: SocketClientConfig(
        initPayload: {"authToken": "${centralstate.GraphQLToken}"},
        autoReconnect: true,
        inactivityTimeout: Duration(seconds: 30),
      ),
    );

    link = link.concat(socketLink);

    client = ValueNotifier(
      GraphQLClient(cache: InMemoryCache(), link: link),
    );

Виджет подписки:

GraphQLProvider(
          client: client,
          child: Subscription(
            operationName,
            """subscription $operationName{
    leagueGameStatusUpdate(leagueAppID:"${centralstate.leagueAppID}"){
          appID
          error
          status
            }
            }""",
            builder: ({
              bool loading,
              dynamic payload,
              dynamic error,
            }) {



//how to make sure that WebSocket is connected and then call playduel function


              game.playDuel().then((value) {
                if (value != 'complete') {
                  print('error screen');
                }
              });

              return PlayingAnimation();
            },
          )),

загрузка и загрузка всегда возвращает true и null Мне нужно дать некоторую задержку перед вызовом game.playDuel (), иначе это не сработает.

Спасибо, любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...