centrifuge 0.2.0 centrifuge: ^0.2.0 copied to clipboard
Dart client to communicate with Centrifuge and Centrifugo from Flutter and VM over dart:io WebSocket
Example #
Examples:
example\flutter_app
simple chat applicationexample\console
simple console application
Usage #
Create client:
import 'package:centrifuge/centrifuge.dart' as centrifuge;
final client = centrifuge.createClient("ws://localhost:8000/connection/websocket?format=protobuf");
Note that ?format=protobuf
is required because this library only works with Protobuf protocol.
Connect to server:
await client.connect();
Subscribe to channel:
final subscription = client.getSubscription(channel);
await subscription.subscribe();
subscription.publishStream.listen(onEvent);
subscription.joinStream.listen(onEvent);
subscription.leaveStream.listen(onEvent);
subscription.subscribeSuccessStream.listen(onEvent);
subscription.subscribeErrorStream.listen(onEvent);
subscription.unsubscribeStream.listen(onEvent);
Subscribe to private channel:
final privateSubscription = client.subscribe(channel, token: 'token');
Publish:
final output = jsonEncode({'input': message});
final data = utf8.encode(output);
await subscription.publish(data);
Feature matrix #
- connect to server using JSON protocol format
- connect to server using Protobuf protocol format
- connect with JWT
- connect with custom header
- automatic reconnect in case of errors, network problems etc
- exponential backoff for reconnect
- connect and disconnect events
- handle disconnect reason
- subscribe on channel and handle asynchronous Publications
- handle Join and Leave messages
- handle Unsubscribe notifications
- reconnect on subscribe timeout
- publish method of Subscription
- unsubscribe method of Subscription
- presence method of Subscription
- presence stats method of Subscription
- history method of Subscription
- send asynchronous messages to server
- handle asynchronous messages from server
- send RPC commands
- publish to channel without being subscribed
- subscribe to private channels with JWT
- connection JWT refresh
- private channel subscription JWT refresh
- handle connection expired error
- handle subscription expired error
- ping/pong to find broken connection
- message recovery mechanism
Author #
German Saprykin, saprykin.h@gmail.com