Viewing version 4.2.0. Open the latest package page.

sse

4.2.0

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

Download archive

Readme

Build Status pub package package 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 SocketExceptions.
  • 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.

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'sse:4.2.0'
pubspec.yaml
name: sse
version: 4.2.0
description: >-
  Provides client and server functionality for setting up bi-directional
  communication through Server Sent Events (SSE) and corresponding POST
  requests.
repository: https://github.com/dart-lang/tools/tree/main/pkgs/sse
issue_tracker: https://github.com/dart-lang/tools/labels/package%3Asse

environment:
  sdk: ^3.11.0

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'

dev_dependencies:
  dart_flutter_team_lints: ^3.0.0
  shelf_static: ^1.0.0
  test: ^1.16.6
  webdriver: ^3.0.0

Version history

VersionPublishedArchiveSHA-256
0.0.1On demandDownload792639c4…682ce6
1.0.0On demandDownload74233c17…abc86a
2.0.0On demandDownload845fd5ef…0e78b0
2.0.1On demandDownloaddb2c16af…2cf52f
2.0.2On demandDownloadf1c8c1c6…679320
2.0.3On demandDownloadd189811f…1793ce
2.1.0On demandDownload7fcfe133…d2c16b
2.1.1On demandDownloadc51bf8ee…3ffd44
2.1.2On demandDownloadd0b70e48…14d245
3.0.0On demandDownloadb2c63fc9…78c991
3.1.0On demandDownloadcf33a128…a40646
3.1.1On demandDownload939999dd…fc3acf
3.1.2On demandDownloada508efe6…9cfd91
3.2.0On demandDownload21e6d65c…68f9e5
3.2.1On demandDownload0834892e…d3284e
3.2.2On demandDownload7e6e4173…8e5824
3.3.0On demandDownload8d1f67a3…4f782c
3.4.0On demandDownload0d538783…34a7ff
3.5.0On demandDownloada0930b95…b02457
3.6.0On demandDownloada260e59a…7c54a1
3.6.1On demandDownload5266f3b8…cce5c7
3.7.0On demandDownload58b19d46…a3a50f
3.8.0On demandDownload989dd04b…3221c4
3.8.1On demandDownloadde5eae4f…e8098c
3.8.3On demandDownload4618734b…a5f889
4.0.0On demandDownloadd7e0174a…11da65
4.1.0On demandDownloadb08bb562…ad22b7
4.1.1On demandDownload2d7c94b8…438d5c
4.1.2On demandDownload3ff9088c…b59442
4.1.3On demandDownloadd1153185…15ca62
4.1.4On demandDownload8168874c…c5319c
4.1.5On demandDownloadfdce3a4a…1638f0
4.1.6On demandDownload111a0584…0bb89a
4.1.7On demandDownload4389a01d…7ee32b
4.1.8On demandDownloadfcc97470…603643
4.2.0Cached · Upstream SHA-256 matchedDownloada9a804db…c52302

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 "\u003e=0.5.0 \u003c2.0.0"