# sse 4.2.0

Provides client and server functionality for setting up bi-directional communication through Server Sent Events (SSE) and corresponding POST requests.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add sse
```
Published: 2026-04-08T23:21:06.407449Z
Expected archive SHA-256: a9a804dbde8bfd369da3b4aa241d44d63a6486a97388c54ec166073d88c52302

Available in cache; verification: upstream_checksum
## Direct dependencies
- async: ^2.0.8
- collection: ^1.0.0
- logging: ^1.0.0
- pool: ^1.5.0
- shelf: ^1.1.0
- stream_channel: ^2.0.0
- web: >=0.5.0 <2.0.0

## Package README (untrusted upstream documentation)
[![Build Status](https://github.com/dart-lang/tools/actions/workflows/sse.yaml/badge.svg)](https://github.com/dart-lang/tools/actions/workflows/sse.yaml)
[![pub package](https://img.shields.io/pub/v/sse.svg)](https://pub.dev/packages/sse)
[![package publisher](https://img.shields.io/pub/publisher/sse.svg)](https://pub.dev/packages/sse/publisher)

This package provides support for bi-directional communication through Server
Sent Events and corresponding POST requests.

This package is not intended to be a general purpose SSE package, but instead is
a bidirectional protocol for use when Websockets are unavailable. That is, both
the client and the server expose a `sink` and `stream` on which to send and
receive messages respectively.

Both the server and client have implicit assumptions on each other and therefore
a client from this package must be paired with a server from this package.

## Changelog
## 4.2.0

- Update the minimum Dart SDK version to `3.11.0`.
- Handle out of order disconnects and reconnects.
  - Allow SSE connections to be reused if not in a keep alive period.
  - Allow a debounce period after connections to ignore disconnects which may be
    from prior connections.
  - Add logging when messages are received out of order.

## 4.1.8

- Simplify the format of client ID strings.

## 4.1.7

- Move to `dart-lang/tools` monorepo.

## 4.1.6

- Require package `web: '>=0.5.0 <2.0.0'`.

## 4.1.5

- Drop unneeded dependency on `package:js`.
- Update the minimum Dart SDK version to `3.3.0`.
- Support the latest `package:web`.

## 4.1.4

- Fix incorrect cast causing failure with `dart2wasm`.

## 4.1.3

- Update the minimum Dart SDK version to `3.2.0`.

## 4.1.2

- Send `fetch` requests instead of `XHR` requests.
- Add an optional `debugKey` parameter to `SseClient` to include in logging.
- Add a dependency on `package:js`.
- Update the minimum Dart SDK version to `2.16.0`.

## 4.1.1

- Apply `keepAlive` logic to `SocketException`s.
- Switch from using `package:pedantic` to `package:lints`
- Rev the minimum required SDK to 2.15.
- Populate the pubspec `repository` field.

## 4.1.0

- Limit the number of concurrent requests to prevent Chrome from automatically
  dropping them on the floor.

## 4.0.0

- Support null safety.

## 3.8.3

- Require the latest shelf and remove dead code.

## 3.8.2

- Complete `onConnected` with an error if the `SseClient` receives an error
  before the connection is successfully opened.

## 3.8.1

- Fix an issue where closing the `SseConnection` stream would result in an
  error.

## 3.8.0

- Add `onConnected` to replace `onOpen`.
- Fix an issue where failed requests would not add a `done` event to the
  connection `sink`.

## 3.7.0

- Deprecate the client's `onOpen` getter. Messages will now be buffered until a
  connection is established.

## 3.6.1

- Drop dependency on `package:uuid`.

## 3.6.0

- Improve performance by buffering out of order messages in the server instead
  of the client.

\*\* Note \*\* This is not modelled as a breaking change as the server can
handle messages from older clients. However, clients should be using the latest
server if they require order guarantees.

## 3.5.0

- Add new `shutdown` methods on `SseHandler` and `SseConnection` to allow
  closing connections immediately, ignoring any keep-alive periods.

## 3.4.0

- Remove `onClose` from `SseConnection` and ensure the corresponding
  `sink.close` correctly fires.

## 3.3.0

- Add an `onClose` event to the `SseConnection`. This allows consumers to listen
  to this event in lue of `sseConnection.sink.done` as that is not guaranteed to
  fire.

## 3.2.2

- Fix an issue where `keepAlive` may cause state errors when attempting to send
  messages on a closed stream.

## 3.2.1

- Fix an issue where `keepAlive` would only allow a single reconnection.

## 3.2.0

- Re-expose `isInKeepAlivePeriod` flag on `SseConnection`. This flag will be
  `true` when a connection has been dropped and is in the keep-alive period
  waiting for a client to reconnect.

## 3.1.2

- Fix an issue where the `SseClient` would not send a `done` event when there
  was an error with the SSE connection.

## 3.1.1

- Make `isInKeepAlive` on `SseConnection` private.

**Note that this is a breaking change but in actuality no one should be
depending on this API.**

## 3.1.0

- Add optional `keepAlive` parameter to the `SseHandler`. If `keepAlive` is
  supplied, the connection will remain active for this period after a disconnect
  and can be reconnected transparently. If there is no reconnect within that
  period, the connection will be closed normally.

## 3.0.0

- Add retry logic.

**Possible Breaking Change Error messages may now be delayed up to 5 seconds in
the client.**

## 2.1.2

- Remove `package:http` dependency.

## 2.1.1

- Use proper headers delimiter.

## 2.1.0

- Support Firefox.

## 2.0.3

- Fix an issue where messages could come out of order.

## 2.0.2

- Support the latest `package:stream_channel`.
- Require Dart SDK `>=2.1.0 <3.0.0`.

## 2.0.1

- Update to `package:uuid` version 2.0.

## 2.0.0

- No longer expose `close` and `onClose` on an `SseConnection`. This is simply
  handled by the underlying `stream` / `sink`.
- Fix a bug where resources of the `SseConnection` were not properly closed.

## 1.0.0

- Internal cleanup.

## 0.0.1

- Initial commit.







 
