Mqtt
January 31, 2018 ยท View on GitHub
This is an mqtt client written in Dart. It can be used in the browser (over websocket) or the VM (over socker or websocket).
See http://mqtt.org/ for details on mqtt protocol.
Usage
Create a connection over websocket:
var mqttCnx = new MqttConnectionIOWebSocket.setOptions("ws://127.0.0.1/8080");
Create a connection over socket:
var mqttCnx = new MqttConnectionIOSocket.setOptions(host: "127.0.0.1", port: 8083);
Create mqtt client:
MqttClient c = new MqttClient(mqttCnx, clientID: "MyClientID", qos: QOS_1);
Set a will (must be done before connecting to the broker):
c.setWill("MyWillTopic", "MyWillPayload", QOS_1, 0);
Connect to broker:
c.connect(onConnectionLost)
.then( (c)=> onConnected(c) )
.catchError((e) => print("Error: $e"), test: (e) => e is SocketException)
.catchError((mqttErr) => print("Error: $mqttErr")
);
Publish a message:
c.publish("MyTopic", "MyMessage", 1, QOS_1, 0)
.then( (m) => print("Message ${m.messageID} published"); );
Subscribe to a topic:
c.subscribe("MyTopic", QOS_1, onMessage)
.then( (s) => print("Subscription done - ID: ${s.messageID} - Qos: ${s.grantedQoS}") );
Unsubscribe:
c.unsubscribe("MyTopic", s.messageID)
.then( (u) => print("Unsubscribed from subscription ${u.messageID}") );
Disconnect:
c.disconnect();
VM Example
See example/mqtt_sub/ for a sample mqtt publish and example/mqtt_pub/ for a sample subscribe.
Available options can be displayed through:
dart mqtt_sub.dart -hdart mqtt_pub.dart -h
Web Example
See example/mqtt_web for a sample web page connecting, subscribing and publishing mqtt messages
Testing
Testing was done using the mosquitto broker (http://mosquitto.org/). A mosquitto test server is available at http://test.mosquitto.org/.
Websocket testing was done through mqtt_ws_bridge.dart.