Dart – NATS
The entire project was meticulously written and designed to be used with Dart and Flutter. It’s a Dart belonging to the client. It totally supports the NATS messaging system.

Flutter Web Support by WebSocket
First of all, Flutter Web Support by WebSocket.
client.connect(Uri.parse('ws://localhost:80'));
Flutter Other Platform Support by TCP Socket and WebSocket
After then, Flutter Other Platform Support by TCP Socket and WebSocket .
client.tcpConnect('localhost');
client.connect(Uri.parse('ws://localhost:80'));
API Change
To support Flutter Web. We change transport from socket to WebSocket and also change API call
Dart Examples:
Run the example/main.dart
:
dart example/main.dart
import 'package:dart_nats/dart_nats.dart';
void main() async {
var client = Client();
client.connect(Uri.parse('ws://localhost:80'));
var sub = client.sub('subject1');
client.pubString('subject1', 'message1');
var msg = await sub.stream.first;
print(msg.string);
client.unSub(sub);
client.close();
}
Flutter Examples:
Import and Declare object
import 'package:dart_nats/dart_nats.dart' as nats;
nats.Client natsClient;
nats.Subscription fooSub, barSub;
Simply connect to server and subscribe to subject
void connect() {
natsClient = nats.Client();
natsClient.connect(Uri.parse('wss://demo.nats.io:443');
fooSub = natsClient.sub('foo');
barSub = natsClient.sub('bar');
}
Use as Stream in StreamBuilder
StreamBuilder(
stream: fooSub.stream,
builder: (context, AsyncSnapshot<nats.Message> snapshot) {
return Text(snapshot.hasData ? '${snapshot.data.string}' : '');
},
),
Publish Message
natsClient.pubString('subject','message string');
Dispose
void dispose() {
natsClient.close();
super.dispose();
}
Full Flutter sample code example/flutter/main.dart
Features
The supported features are what we’re most interested in with this client. As a result, here is a list of functionality that this client presently supports and plans to support:
- [x] – Publish
- [x] – Subscribe, unsubscribe
- [x] – NUID, Inbox
- [x] – Reconnect to single server when connection lost and resume subscription
- [x] – Unsubscribe after N message
- [x] – Request, Respond
- [x] – Queue subscribe
- [ ] – caches, flush, drain
- [x] – Request timeout
- [ ] – structured data
- [ ] – Connection option (cluster, timeout,ping interval, max ping, echo,… )
- [ ] – Random automatic reconnection, disable reconnect, number of attempts, pausing
- [ ] – Connect to cluster,randomize, Automatic reconnect upon connection failure base server info
- [x] – Events/status
- [ ] – disconnect handler, reconnect handler
- [x] – Buffering message during reconnect atempts
- [ ] – All authentication models, including NATS 2.0 JWT and seed keys
- [ ] – NATS 2.2
GitHub
https://github.com/chartchuo/dart-nats