On Github amorenoc / mqtt-slides
var MESSAGE_TYPE = {
CONNECT: 1,
CONNACK: 2,
PUBLISH: 3,
PUBACK: 4,
PUBREC: 5,
PUBREL: 6,
PUBCOMP: 7,
SUBSCRIBE: 8,
SUBACK: 9,
UNSUBSCRIBE: 10,
UNSUBACK: 11,
PINGREQ: 12,
PINGRESP: 13,
DISCONNECT: 14
};
TCP/IP port 1883 for MQTT. Port 8883 for MQTT over SSL.
Fixed header (2 bytes) + Variable header + Payload
The Quality of Service used to deliver a message
An umbrella project, providing an open source MQTT v3.1/v3.1.1 broker, client libraries, language bindings, and client utilities.
Seems the Mosquitto project is moving to Eclipse, discussed next
mosquitto.org There are at least a C and Python implmentation, and a C++ binding
#include <stdio.h>
#include <err.h>
#include <mosquitto.h>
void on_message(struct mosquitto *m, void *user_data, const struct mosquitto_message *msg)
{
fprintf(stderr, "lights at %s are %s\n", msg->topic, (char*)msg->payload);
}
int main(int argc, char **argv)
{
struct mosquitto *client;
int ret;
mosquitto_lib_init();
client = mosquitto_new("client-id", true, NULL);
if (!client)
err(1, "mosquitto failed");
ret = mosquitto_connect(client, "127.0.0.1", 1883, 60);
if (ret != MOSQ_ERR_SUCCESS)
err(1, "mosquitto failed");
ret = mosquitto_subscribe(client, NULL, "switches/+/status", 0);
if (ret != MOSQ_ERR_SUCCESS)
err(1, "mosquitto failed");
mosquitto_message_callback_set(client, on_message);
while (MOSQ_ERR_SUCCESS
== mosquitto_loop(client, -1, 1));
return 0;
}
#!/usr/bin/env python
import mosquitto
def on_message(mosq, obj, msg):
print("lights at "+msg.topic+" are "+msg.payload)
client = mosquitto.Mosquitto()
client.connect("localhost")
client.subscribe("switches/+/status")
client.on_message = on_message
while client.loop() == mosquitto.MOSQ_ERR_SUCCESS:
pass
A simple example showing how to subscribe to a topic and define a function to receive the messages.
No client id is provided, so the mosquitto module will generate a random id, and reduce the chance of having an id collision on the broker
Note that we are blocking; We could also use loop_start, which will handle the mosquitto connection into a separate thread.
Project providing open source implementations of C, C++, Java, JavaScript, Lua and Python client libraries, plus a client view plugin for Eclipse IDE.
http://www.eclipse.org/paho Python client is the same as Mosquitto, just different licenseclient = new Messaging.Client( "127.0.0.1", 80, 'clientId' );
client.onMessageArrived = function( msg ) {
console.log( "lights at " + msg.destinationName +
" are " + msg.payloadString );
client.disconnect();
};
client.connect({
onSuccess:function() {
client.subscribe( "switches/+/status" );
}
});
Browser-based library that uses WebSockets to connect to an MQTT server.
To use MQTT over WebSocket, you'll need that server supports the WebSocket protocol, e.g. lighttpd with mod_websocket
chat sessions, where users can join and leave a conversation, fit well with the publisher-subscriber model
Under the hood: Rebuilding Facebook for iOSMonitoring experiments at the University of Southampton’s chemistry lab.
Send cardio data to doctors remotely monitoring at home patients