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