Есть ли решение для начального тайм-аута с использованием Dart GRP c? - PullRequest
0 голосов
/ 04 мая 2020

Используя Dart Grp c, я устанавливаю тайм-аут соединения на 5 секунд. Хотя это, кажется, работает в определенной степени, начальные периоды ожидания значительно различаются. например: 30 с c, 28 с c, 64 с c. После первоначального тайм-аута (без подключения) тайм-ауты составляют 3 секунды, но первый всегда намного длиннее. Есть ли способ, которым я могу улучшить это, потому что начальное время ожидания слишком велико? Без установки тайм-аута соединение, по-видимому, никогда не прекращается. Код ниже:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:grpc/grpc.dart';

import 'protos/counter1.pb.dart';
import 'protos/counter1.pbgrpc.dart';

  _fnOnBuildComplete() async {
    try {
      _vChannel = ClientChannel('192.168.1.5',
          port: 8080,
          options: const ChannelOptions(
              credentials: ChannelCredentials.insecure(),
              connectionTimeout: Duration(seconds: 5)));
      _vChannel.getConnection().timeout(Duration(seconds: 5));
      _vClient = Counter1Client(_vChannel);
      _vClient..fnIncrementCounter(Counter1Request()..req1 = "0") /* INIT */;
    } catch (vError) {
      print("_fnOnBuildComplete: Error = $vError");
    }
  }

Типичная ошибка:

I/flutter (16490): _fnIncrementCounter: error = gRPC Error (14, Error connecting: SocketException: OS Error: No route to host, errno = 113, address = 192.168.1.5, port = 33823)
...