dart_sse 0.0.2 copy "dart_sse: ^0.0.2" to clipboard
dart_sse: ^0.0.2 copied to clipboard

Dart package to help consume SSE API. It consumes server sent events by returning parsed model of the event, id, and the data

Dart SSE #

Dart package to help consume Server Sent Events

Forked from (https://github.com/pratikbaid3/flutter_client_sse)[https://github.com/pratikbaid3/flutter_client_sse]

Features: #

  • Consumes server sent events
  • Returns parsed model of the event, id and the data

Getting Started #

Get request #

// GET REQUEST

  final SSEClient getClient = SSEClient(
    authenticate: (request) async {
      request.headers['Cookie'] =
          'jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJpYXQiOjE2NDMyMTAyMzEsImV4cCI6MTY0MzgxNTAzMX0.U0aCAM2fKE1OVnGFbgAU_UVBvNwOMMquvPY8QaLD138; Path=/; Expires=Wed, 02 Feb 2022 15:17:11 GMT; HttpOnly; SameSite=Strict';
      return request;
    },
  );

  getClient.listen(
    (event) {
      print('Id: ${event.id ?? ''}');
      print('Event: ${event.event ?? ''}');
      print('Data: ${event.data ?? ''}');
    },
  );

  getClient.subscribeToSSE(
    method: SSERequestType.get,
    url: 'http://localhost:12000/sse',
    headers: {
      'Accept': 'text/event-stream',
      'Cache-Control': 'no-cache',
    },
  );

Post request #

  ///POST REQUEST
  final SSEClient postClient = SSEClient(
    authenticate: (request) async {
      request.headers['Cookie'] =
          'jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJpYXQiOjE2NDMyMTAyMzEsImV4cCI6MTY0MzgxNTAzMX0.U0aCAM2fKE1OVnGFbgAU_UVBvNwOMMquvPY8QaLD138; Path=/; Expires=Wed, 02 Feb 2022 15:17:11 GMT; HttpOnly; SameSite=Strict';
      return request;
    },
  );

  postClient.subscribeToSSE(
    method: SSERequestType.post,
    url:
        'http://localhost:12000/api/activity-stream?historySnapshot=FIVE_MINUTE',
    headers: {
      'Accept': 'text/event-stream',
      'Cache-Control': 'no-cache',
    },
    body: {
      'name': 'Hello',
      'customerInfo': {'age': 25, 'height': 168},
    },
  ).listen(
    (event) {
      print('Id: ${event.id!}');
      print('Event: ${event.event!}');
      print('Data: ${event.data!}');
    },
  );

Authenticate #

SSEClient can be provided with authenticate method. This method allow to mutate the http request with anything before sending.

This callback is called before all request, even on retry. If an error is thrown, the authenticate will be called again. In case of error related to a refresh token, you can update the token before sending reconnecting to SSE.

Running Sample Backend #

Nest The backend is in NestJS serving a single SSE api.

Installation #

$ yarn install

Running the app #

# development
$ yarn run start

# watch mode
$ yarn run start:dev

Run the example #

dart run example/main.dart
2
likes
160
pub points
44%
popularity

Publisher

verified publisherdevac.fr

Dart package to help consume SSE API. It consumes server sent events by returning parsed model of the event, id, and the data

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

http

More

Packages that depend on dart_sse