How do we listen to Server Sent Event(SSE) Stream using Dio package

Viewed 981

I was trying to subscribe to server sent event(SSE) stream. I was able to connect to the stream using this code. It works totally as expected and returns steam of data. But generally I use Dio package. Hence I wanted to implement the same using dio flutter. But unfortunately I'm unable to do that.

subscribe() async {
    print("Subscribing..");
    try {
      _client = http.Client();

      var request = new http.Request("GET", Uri.parse("http://192.168.1.11:8080/myserver/events"));
      request.headers["Cache-Control"] = "no-cache";
      request.headers["Accept"] = "text/event-stream";

      Future<http.StreamedResponse> response = _client.send(request);
      print("Subscribed!");

      response.asStream().listen((streamedResponse) {
        print("Received streamedResponse.statusCode:${streamedResponse.statusCode}");
        streamedResponse.stream.listen((data) {
          print("Received data:${utf8.decode(data)}");
        });
      });
    } catch(e) {
      print("Caught $e");
    }
  }

This is what I tried with Dio package. But this returns 404 request not found. Mostly I'm not able to figure out how do I get a StreamedResponse using dio package.

    var response = dio.request(url, options: Options(headers: {"Accept": "*/*", "Cache-Control": "no-cache"}));
    print("Subscribed!");

    response.asStream().listen((streamedResponse) {
      print("Received streamedResponse.statusCode:${streamedResponse.statusCode}");
      print("data:----------------------> ${streamedResponse.data}");
    });
0 Answers
Related