Transcript
Page 1: JAX 2014 - M2M for Java Developers with MQTT

Dominik Obermaier | dc-square GmbH

M2M for Java Developers with MQTT

Page 2: JAX 2014 - M2M for Java Developers with MQTT

About meHi, I’m Dominik Obermaier.• CTO of dc-square

• HiveMQ architect

• helped standardizing MQTT at OASIS

• Speaker and author about MQTT, M2M and IoT

@dobermai

Page 3: JAX 2014 - M2M for Java Developers with MQTT

• Typical morning

https://flic.kr/p/eaX1GC

Page 4: JAX 2014 - M2M for Java Developers with MQTT

https://flic.kr/p/7Vvzvp

Page 5: JAX 2014 - M2M for Java Developers with MQTT

https://flic.kr/p/48VxKfhttps://flic.kr/p/hLd8CU

Page 6: JAX 2014 - M2M for Java Developers with MQTT

• Macbook E-Mail Stockphoto

https://flic.kr/p/aERxbF

Page 7: JAX 2014 - M2M for Java Developers with MQTT

• Dusche Stockphoto

https://flic.kr/p/6JuGDb

Page 8: JAX 2014 - M2M for Java Developers with MQTT
Page 9: JAX 2014 - M2M for Java Developers with MQTT

https://flic.kr/p/3QYv2o

Page 10: JAX 2014 - M2M for Java Developers with MQTT

• Imagine Bild

Page 11: JAX 2014 - M2M for Java Developers with MQTT

• Internet of Things

Internet of Things

Page 12: JAX 2014 - M2M for Java Developers with MQTT

The Internet of Things (IoT) refers to uniquely identifiable objects and their virtual representations in an

Internet-like structure

Page 13: JAX 2014 - M2M for Java Developers with MQTT

Why should

we care?

Page 14: JAX 2014 - M2M for Java Developers with MQTT

Some statistics

2010 2015 2020

~6.909.000.000 ~7.302.000.000 ~7.675.000.000

~12.500.000.000 ~25.000.000.000 ~50.000.000.000

[1]Source: http://www.un.org/esa/population/publications/wpp2008/wpp2008_highlights.pdf

[1]

[2]Source: http://share.cisco.com/internet-of-things.html

[2]

Page 15: JAX 2014 - M2M for Java Developers with MQTT

Some statistics

0

12,500,000,000

25,000,000,000

37,500,000,000

50,000,000,000

2010 2015 2020

People Things

Page 16: JAX 2014 - M2M for Java Developers with MQTT

Some statistics

0

12,500,000,000

25,000,000,000

37,500,000,000

50,000,000,000

2010 2015 2020

People Things

1.8x

Page 17: JAX 2014 - M2M for Java Developers with MQTT

Some statistics

0

12,500,000,000

25,000,000,000

37,500,000,000

50,000,000,000

2010 2015 2020

People Things

1.8x

3.4x

Page 18: JAX 2014 - M2M for Java Developers with MQTT

Some statistics

0

12,500,000,000

25,000,000,000

37,500,000,000

50,000,000,000

2010 2015 2020

People Things

1.8x

3.4x

6.5x

Page 19: JAX 2014 - M2M for Java Developers with MQTT
Page 20: JAX 2014 - M2M for Java Developers with MQTT

https://flic.kr/p/athSFb

Page 21: JAX 2014 - M2M for Java Developers with MQTT
Page 22: JAX 2014 - M2M for Java Developers with MQTT

• Android Photo

https://flic.kr/p/9vSR9i

Page 23: JAX 2014 - M2M for Java Developers with MQTT

Evolution?

Revolution?

Page 24: JAX 2014 - M2M for Java Developers with MQTT

M2M?https://flic.kr/p/834e93

Page 25: JAX 2014 - M2M for Java Developers with MQTT

TECHNOLOGY THAT SUPPORTS WIRED

OR WIRELESS COMMUNICATION BETWEEN DEVICES

Page 26: JAX 2014 - M2M for Java Developers with MQTT

M2MInternet of Things

RFID

Bluetooth

Barcode

Non-IP

Page 27: JAX 2014 - M2M for Java Developers with MQTT

Why now?

Page 28: JAX 2014 - M2M for Java Developers with MQTT

https://flic.kr/p/8EidjG

Page 29: JAX 2014 - M2M for Java Developers with MQTT

https://flic.kr/p/daTVZY

Page 30: JAX 2014 - M2M for Java Developers with MQTT

Screenshot Taken from Oracle JavaOne Strategic Keynote 2013

Page 31: JAX 2014 - M2M for Java Developers with MQTT

Are we there yet?

https://flic.kr/p/5WR2fd

Page 32: JAX 2014 - M2M for Java Developers with MQTT

ChallengesSecurity Identity

ManagementInteroperability

PrivacyProvisioning

ScalabilityBIG Data

Device Management

...

Page 33: JAX 2014 - M2M for Java Developers with MQTT

Protocols?

Page 34: JAX 2014 - M2M for Java Developers with MQTT

Application Protocols

CoAP

HTTP

Page 35: JAX 2014 - M2M for Java Developers with MQTT

‣ efficient in bandwidth

‣ scalable

‣ standardized

‣ open

‣ data agnostic

‣ must be suited for constrained devices AND server infrastructure

Requirements for an IoT Protocol

Page 36: JAX 2014 - M2M for Java Developers with MQTT

Request / Response

Verbose

Polling instead of Push

No quality of service

How to get notified if clients die?

Stateless

HTTP?

Page 37: JAX 2014 - M2M for Java Developers with MQTT
Page 38: JAX 2014 - M2M for Java Developers with MQTT

What is MQTT‣ Messaging Protocol

‣ Simple

‣ On top of TCP

‣ Publish / Subscribe Architecture

‣ Binary protocol

‣ Minimal Overhead

‣ Designed for unreliable networks

‣ Data agnostic

Page 39: JAX 2014 - M2M for Java Developers with MQTT

Use cases‣ Push instead of Poll

‣ Bandwidth is at a premium

‣ Enterprise applications should interact with mobile applications

‣ Reliable delivery of messages over unreliable networks

‣ Constrained devices

‣ Low latency

Page 40: JAX 2014 - M2M for Java Developers with MQTT

Features‣ Topic Wildcards

‣ 3 Quality of Service Levels

‣ Retained Messages

‣ Last Will and Testament

‣ Persistent Sessions

‣ Heartbeats

Page 41: JAX 2014 - M2M for Java Developers with MQTT

Publish / Subscribe

Page 42: JAX 2014 - M2M for Java Developers with MQTT

Publish / Subscribe

Page 43: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

Page 44: JAX 2014 - M2M for Java Developers with MQTT

‣ Hierarchical

‣ Very lightweight

‣ Subtopic-Level Wildcards (+)

‣ Subtree-Level Wildcards (#)

‣ Max 64.000 characters

‣ Clients can publish / subscribe to N topics

‣ Brokers can queue for topics if QoS > 0

MQTT Topics

Page 45: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

Page 46: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

Page 47: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

house1/floor1/kitchen/+

Page 48: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

house1/floor1/kitchen/+

house1/floor1/+/light

Page 49: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

house1/floor1/kitchen/+

house1/floor1/+/light

house1/+/+/light

Page 50: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

house1/floor1/kitchen/+

house1/floor1/+/light

house1/+/+/light

house1/#

Page 51: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

house1/floor1/kitchen/+

house1/floor1/+/light

house1/+/+/light

house1/#

+/floor1/+/#

Page 52: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topicshouse1/floor1/kitchen/light

house1/floor1/kitchen/+

house1/floor1/+/light

house1/+/+/light

house1/#

+/floor1/+/#

+/+/+/#

Page 53: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT/is/awesome MQTT/is/fantastic

Bacon/is/awesome

MQTT/looks/fantasticBacon/looks/fantastic

Page 54: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 55: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 56: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 57: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 58: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 59: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

MQTT/is/awesome

Page 60: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 61: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 62: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 63: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 64: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 65: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topics

MQTT Bacon

is

awesome

looks

fantastic

Bacon/is/awesome

Page 66: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 67: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 68: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 69: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 70: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 71: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 72: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/awesome

Page 73: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 74: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 75: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 76: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 77: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 78: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 79: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 80: JAX 2014 - M2M for Java Developers with MQTT

MQTT Topic Level Wildcard

MQTT Bacon

is

awesome

looks

fantastic

+/is/+

Page 81: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 82: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 83: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 84: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 85: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 86: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 87: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 88: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 89: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

MQTT/#

Page 90: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 91: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 92: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 93: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 94: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 95: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 96: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 97: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 98: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 99: JAX 2014 - M2M for Java Developers with MQTT

MQTT Subtree Wildcard

MQTT Bacon

is

awesome

looks

fantastic

#

Page 100: JAX 2014 - M2M for Java Developers with MQTT

Quality of Service Levels

QoS 0 At most once delivery

The message is delivered once or never.

QoS 1 At least once delivery

The message is delivered once or more.

QoS 2 Exactly once delivery

The message is delivered exactly once.

Page 101: JAX 2014 - M2M for Java Developers with MQTT

Last Will and Testament‣ Clients can specify a LWT

‣ Broker publishes the LWT message on behalf of the client on “death”

‣ Useful for reporting problems

‣ Real push on device “death”

‣ Mostly used for reporting the connection status of a device

Page 102: JAX 2014 - M2M for Java Developers with MQTT

Retained messages‣ Last known good value

‣ Last message is stored for a topic

‣ Publishing clients decide if the message should be retained

‣ Clients automatically receive the retained message after subscribing

Page 103: JAX 2014 - M2M for Java Developers with MQTT

SecurityProtocol

‣ Username / Password

‣ Payload Encryption

Transport

‣ TLS

‣ Client certificate authentication

Broker

‣ Publish / Subscribe Permissions

‣ Integration to other systems (databases, APIs, ....)

Page 104: JAX 2014 - M2M for Java Developers with MQTT

History

1999 2010 2013 2014

MQTT inventedby IBM and

Arcom (Eurotech)

royalty free OASIS TC formed

MQTT is OASIS standard

Page 105: JAX 2014 - M2M for Java Developers with MQTT

Real world use cases

Page 106: JAX 2014 - M2M for Java Developers with MQTT

Use case:

‣ more than 850M Facebook Messenger Users

‣ Chat application

‣ Improved Battery

‣ Lower latency

‣ Less bandwidth

https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920

Facebook Messenger

Page 107: JAX 2014 - M2M for Java Developers with MQTT

Use case:

‣MQTT as central message “bus”

‣ Easy to integrate with other technologies

‣ Remote monitoring

‣ Many open source Smart Home Frameworks

support MQTT

‣ Remote control

Smart Home

Page 108: JAX 2014 - M2M for Java Developers with MQTT

Use case:

‣30.000 devices

‣ 17.000 km pipeline

‣ Remote monitoring

‣ Remote control

‣ Uses satellite links

‣ Bandwidth is very expensive

Pipelines

Page 109: JAX 2014 - M2M for Java Developers with MQTT

Gaining traction

Google Trends - 2014/05/13

Page 110: JAX 2014 - M2M for Java Developers with MQTT

MQTT Brokers

Page 111: JAX 2014 - M2M for Java Developers with MQTT

Mosquitto

‣ Open Source

‣ Ideal for running in constrained environments

‣ Supports Bridging

‣Written in C

Page 112: JAX 2014 - M2M for Java Developers with MQTT

HiveMQ‣ High Performance

MQTT broker

‣ Native Websockets Support

‣ Java Plugin System

‣ Clustering

‣ Bridging

‣ Scalable to > 100.000 connections

Page 113: JAX 2014 - M2M for Java Developers with MQTT

Other brokers

+ Many otherssee https://github.com/mqtt/mqtt.github.io/wiki/brokers

Page 114: JAX 2014 - M2M for Java Developers with MQTT

Scaling

HIER SCALING BILD

Page 115: JAX 2014 - M2M for Java Developers with MQTT

Bridging

Page 116: JAX 2014 - M2M for Java Developers with MQTT

Clustering

Page 117: JAX 2014 - M2M for Java Developers with MQTT

Broker comparisonQoS

0QoS

1QoS

2Auth Bridge $SYS SSL dynamic

topicscluster websockets plugins

HiveMQ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔

mosquitto ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ X X ✔

RSMB ✔ ✔ ✔ ✔ ✔ ✔ X ✔ X X X

RabbitMQ ✔ ✔ X ✔ X X ✔ ✔ ? ? ?

ActiveMQ ✔ ✔ ✔ ? X X ? ? ? ✔ ?

Page 118: JAX 2014 - M2M for Java Developers with MQTT

MQTT Clients

Page 119: JAX 2014 - M2M for Java Developers with MQTT

Eclipse Paho‣ Open Source

‣ “Reference Implementation”

‣ Available in many languages: Java, Javascript, Lua, C, C++, Go, Python

‣ The JS library uses websockets

‣ Active Community

Page 120: JAX 2014 - M2M for Java Developers with MQTT

MqttClient client = new MqttClient( "tcp://localhost:1883", //URI "publisher", //Client ID new MemoryPersistence()); //Persistence

client.connect();

client.publish("the/topic", //topic "message".getBytes(), //message 1, //QoS false); //retained

client.disconnect();

Page 121: JAX 2014 - M2M for Java Developers with MQTT

MqttClient client = new MqttClient( "tcp://localhost:1883", //URI "publisher", //Client ID new MemoryPersistence()); //Persistence

MqttConnectOptions connOptions = new MqttConnectOptions();

connOptions.setKeepAliveInterval(120); connOptions.setWill("help/I/died",

new byte[0], 2, true); connOptions.setCleanSession(false); connOptions.setUserName("username"); connOptions.setPassword("passw".toCharArray());

client.connect(connOptions);

Page 122: JAX 2014 - M2M for Java Developers with MQTT

MqttAsyncClient client = new MqttAsyncClient(...);

client.connect(null, new IMqttActionListener() { @Override public void onSuccess(IMqttToken asyncActionToken) { try { client.publish(...); } catch (MqttException e) {} }

@Override public void onFailure(IMqttToken asyncActionToken,

Throwable exception) {} }); client.disconnect();

Page 123: JAX 2014 - M2M for Java Developers with MQTT

final MqttClient client = new MqttClient(...);

client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) {}

@Override public void messageArrived(String topic,

MqttMessage message)throws Exception { System.out.println(new String(message.getPayload())); }

@Override public void deliveryComplete(IMqttDeliveryToken token) {} }); client.connect();

client.subscribe("#");

Page 124: JAX 2014 - M2M for Java Developers with MQTT

Fusesource MQTT Client

‣ Java

‣ 3 API Styles

‣ Very easy to intercept

‣ Based on HawtIO

‣ Very performant

‣ In Maven Central

Page 125: JAX 2014 - M2M for Java Developers with MQTT

MQTT mqtt = new MQTT(); mqtt.setHost("localhost", 1883); mqtt.setClientId("clientId"); mqtt.setCleanSession(false);

mqtt.setWillTopic("willtopic"); mqtt.setWillMessage("willmessage"); mqtt.setWillQos(QoS.EXACTLY_ONCE);

mqtt.setUserName("user"); mqtt.setPassword("passwd");

BlockingConnection conn = mqtt.blockingConnection();

conn.connect();

Page 126: JAX 2014 - M2M for Java Developers with MQTT

MQTT mqtt = new MQTT(); BlockingConnection conn =

mqtt.blockingConnection(); conn.connect();

conn.publish("the/topic", //topic "message".getBytes(), //message QoS.EXACTLY_ONCE, //QoS false);

conn.disconnect();

Page 127: JAX 2014 - M2M for Java Developers with MQTT

MQTT mqtt = new MQTT();

FutureConnection conn = mqtt.futureConnection(); Future<Void> connectFuture = conn.connect();

// funky business logic

connectFuture.await();

conn.publish("the/topic", //topic "message".getBytes(), //message QoS.EXACTLY_ONCE, //QoS false). then(new Callback<Void>() { @Override public void onSuccess(Void value) { System.out.println("Success"); }

@Override public void onFailure(Throwable value) {}});

Page 128: JAX 2014 - M2M for Java Developers with MQTT

MQTT mqtt = new MQTT(); CallbackConnection conn = mqtt.callbackConnection(); conn.connect(new Callback<Void>() { @Override public void onSuccess(Void value) { conn.publish("the/topic", //topic "message".getBytes(), //message QoS.EXACTLY_ONCE, //QoS false, //retain new Callback<Void>() { @Override public void onSuccess(Void value) { System.out.println("Published"); }

@Override public void onFailure(Throwable value) {} }); } @Override public void onFailure(Throwable value) {}});

Page 129: JAX 2014 - M2M for Java Developers with MQTT

Other MQTT Clients

https://github.com/mqtt/mqtt.github.io/wiki/libraries

Page 130: JAX 2014 - M2M for Java Developers with MQTT

MQTT over Websockets

Page 131: JAX 2014 - M2M for Java Developers with MQTT

‣ Every Browser is a ‘device’

‣ Device-to-Browser Push

‣ Broadcasting to all online users

‣ Detect if a user is offline

‣ Direct Browser-to-device push

‣ Minimum payload

‣ No application-specific protocol

MQTT over websockets

Page 132: JAX 2014 - M2M for Java Developers with MQTT
Page 133: JAX 2014 - M2M for Java Developers with MQTT

Thanks!@dobermai


Top Related