long_polling_channel 0.0.1 copy "long_polling_channel: ^0.0.1" to clipboard
long_polling_channel: ^0.0.1 copied to clipboard

StreamChannel wrappers for long polling.

long_polling_channel #

long_polling_channel offers a lightweight, cross-platform way to build bi-directional messaging over HTTP long polling. The client is backed by package:http, so it runs on the Dart VM and the web, while the server-side handler plugs straight into Shelf.

Installation #

Add the package to your pubspec.yaml:

dependencies:
  long_polling_channel: ^0.0.1

Quick start #

import 'package:long_polling_channel/long_polling_channel.dart';

Future<void> main() async {
  final channel = LongPollingChannel.connect(
    Uri.parse('https://example.com/long-poll'),
  );

  channel.stream.listen((message) {
    print('Received: $message');
  });

  channel.sink.add('Hello from the client');
}

Serving with Shelf #

The package includes a LongPollingHandler that exposes a long polling endpoint compatible with the client channel:

import 'package:long_polling_channel/long_polling_channel.dart';
import 'package:shelf/shelf.dart' as shelf;

final handler = LongPollingHandler(Uri.parse('/long-poll'));

shelf.Handler router = (request) async {
  if (request.url.path == 'long-poll') {
    return handler.handler(request);
  }
  return shelf.Response.notFound('');
};

The handler keeps track of connected clients, buffers outbound messages until acknowledged, and exposes a stream of LongPollingConnection instances via handler.connections.

Example #

Check out example/long_polling_channel_example.dart for a complete script that spins up a Shelf server, connects a client, and demonstrates request/response messaging over long polling.

Run it with:

dart run example/long_polling_channel_example.dart

License #

This project is licensed under the MIT License. See LICENSE for details.

0
likes
150
points
58
downloads

Publisher

verified publisherjamiewest.dev

Weekly Downloads

StreamChannel wrappers for long polling.

Repository
View/report issues

Topics

#server #shelf

Documentation

API reference

License

MIT (license)

Dependencies

async, collection, http, pool, shelf, sse, stream_channel, uuid

More

Packages that depend on long_polling_channel