shelf_eventsource 0.1.0+1

  • Example
  • Installing
  • Versions
  • 0


A shelf extension for EventSource or Server-Sent Events (SSE) that works together with the eventsource package.

How to use it?

The usage is really easy:

import "package:shelf/shelf_io.dart" as io;
import "package:eventsource/publisher.dart";
import "package:shelf_eventsource/shelf_eventsource.dart";

EventSourcePublisher publisher = new EventSourcePublisher(cacheCapacity: 100);
var handler = eventSourceHandler(publisher);
io.serve(handler, "localhost", 8080);

For a more extensive example with routing, see the example/ directory.


This project is available under the MIT license, as can be found in the LICENSE file.



  • Initial version


import "dart:async";

import "package:shelf/shelf_io.dart" as io;
import "package:shelf_route/shelf_route.dart" as routing;

import "package:eventsource/publisher.dart";
import "package:shelf_eventsource/shelf_eventsource.dart";

main() {
  // create the publisher object that will manage event publishing to
  // subscribers
  EventSourcePublisher publisher = new EventSourcePublisher(cacheCapacity: 100);

  // generate some dummy events

  // create a shelf handler
  var handler = eventSourceHandler(publisher);
  // or create a handler for a specific channel
  var channelHandler =
      eventSourceHandler(publisher, channel: "mychannel", gzip: true);

  // create a router to serve the different event sources
  var router = routing.router();
  router.get("/events", handler);
  router.get("/mychannel", channelHandler);

  // serve localhost with our router
  io.serve(router.handler, "localhost", 8080);

generateEvents(publisher) {
  int id = 0;
  new Timer.periodic(const Duration(seconds: 1), (timer) {
    // publish an event on the default channel
        .add(new Event.message(id: "$id", data: "Always the same message?"));
    // publish event in a channel
        new Event.message(id: "$id", data: "Mychannel Message"), ["mychannel"]);
    if (id == 25) {
      // broadcast last message to both channels and close them
          new Event(event: "goodbye", data: "Goodbye all!"), ["", "mychannel"]);

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  shelf_eventsource: ^0.1.0+1

2. Install it

You can install packages from the command line:

with pub:

$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:shelf_eventsource/shelf_eventsource.dart';
Version Uploaded Documentation Archive
0.1.0+1 Nov 28, 2016 Go to the documentation of shelf_eventsource 0.1.0+1 Download shelf_eventsource 0.1.0+1 archive
0.1.0 Nov 27, 2016 Go to the documentation of shelf_eventsource 0.1.0 Download shelf_eventsource 0.1.0 archive
0.2.0-rc1 Oct 9, 2018 Go to the documentation of shelf_eventsource 0.2.0-rc1 Download shelf_eventsource 0.2.0-rc1 archive
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

The package version is not analyzed, because it does not support Dart 2. Until this is resolved, the package will receive a health and maintenance score of 0.

Analysis issues and suggestions

Support Dart 2 in pubspec.yaml.

The SDK constraint in pubspec.yaml doesn't allow the Dart 2.0.0 release. For information about upgrading it to be Dart 2 compatible, please see

Maintenance issues and suggestions

Running dartdoc failed. (-10 points)

Make sure dartdoc runs without any issues.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.0.0 <2.0.0