ioPushConnect function

PushConnect ioPushConnect({
  1. Duration connectTimeout = const Duration(seconds: 10),
})

HttpClient 기반 PushConnect — 실시간 푸시 신호(SSE) 연결.

스트림이 끝나면(정상 종료·끊김·ServerPushChannel.stop) 내부 클라이언트를 닫는다. 무음 상한을 두지 않는다 — 끊긴 연결의 탐지는 ServerPushChannel의 재연결 백오프가 맡고, 그 사이 갱신은 폴링이 덮는다.

Implementation

PushConnect ioPushConnect({Duration connectTimeout = const Duration(seconds: 10)}) {
  return (String url) async {
    final client = HttpClient()..connectionTimeout = connectTimeout;
    final request = await client.getUrl(Uri.parse(url));
    request.headers.set(HttpHeaders.acceptHeader, 'text/event-stream');
    final response = await request.close();

    Stream<String> body() async* {
      try {
        yield* response.transform(utf8.decoder);
      } finally {
        client.close(force: true);
      }
    }

    return PushResponse(response.statusCode, body());
  };
}