dio icon indicating copy to clipboard operation
dio copied to clipboard

ServerSendEvent support for Flutter Web

Open kuloud opened this issue 1 year ago • 6 comments

Request Statement

When request for ServerSendEvent stream on TargetPlatform: Web, it response with a UnsupportedError: RawSocket constructor

  Stream<T> requestForServerSendEventStream<T>(String url, Map<String, dynamic> request,
      {required void Function(CancelData cancelData) onCancel}) {
    final controller = StreamController<T>.broadcast();
    final cancelData = CancelData(cancelToken: CancelToken());
    try {
      onCancel(cancelData);
      _dio
          .post(url,
              cancelToken: cancelData.cancelToken,
              data: json.encode(request),
              options: Options(responseType: ResponseType.stream))
          .then((it) {
        it.data.stream.listen((it) {
          // ...
        }, onDone: () {
          controller.close();
        }, onError: (err, t) {
          // ...
        });
      }, onError: (err, t) {
        // ...
      });
    } on DioException catch (e) {
      // ...
    }
    return controller.stream;
  }

Solution Brainstorm

No response

kuloud avatar Jun 10 '23 15:06 kuloud