shelf_eventsource 0.1.0+1

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 0

shelf_eventsource

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.

Licensing

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

Changelog

0.1.0

  • Initial version

example/shelf_eventsource_example.dart

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
  generateEvents(publisher);

  // 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
    publisher
        .add(new Event.message(id: "$id", data: "Always the same message?"));
    // publish event in a channel
    publisher.add(
        new Event.message(id: "$id", data: "Mychannel Message"), ["mychannel"]);
    if (id == 25) {
      timer.cancel();
      // broadcast last message to both channels and close them
      publisher.add(
          new Event(event: "goodbye", data: "Goodbye all!"), ["", "mychannel"]);
      publisher.closeAll();
    }
  });
}

Use this package as a library

1. Depend on it

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


dependencies:
  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
Popularity:
Describes how popular the package is relative to other packages. [more]
0
Health:
Code health derived from static analysis. [more]
--
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
--
Overall:
Weighted score of the above. [more]
0
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 https://www.dartlang.org/dart-2#migration.

Maintenance issues and suggestions

Running dartdoc failed. (-10 points)

Make sure dartdoc runs without any issues.

Dependencies

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