[http://creativecommons.org/licenses/by/3.0/]
This work is licensed under a CC
Attribution 3.0 Unported License [http://creativecommons.org/licenses/by/3.0/]
tiny HTTP++
IoT Funnel Protocol
In this lecture we are looking at both lower layer (CoAP) and specific communication protocols (XMPP, WebSocket, AMQP, MQTT, WebRTC, PuSH), as examples of how specific requirements in application areas have resulted in a variety of protocols. The main challenge in this space is to not compare protocols feature-by-feature, but to understand what they do and do not cover, and what they have been designed for.
The Internetwas not the only solution initially
tiny HTTP++
extended subsetof HTTP
REQ: GET /sensors RES: 2.05 Content </sensors/temp>;rt="temperature-c";if="sensor", </sensors/light>;rt="light-lux";if="sensor"

Jabberand intended as an open chat protocol
Stream childrenare XMPP's protocol data units (a stanza [http://tools.ietf.org/html/rfc6120#section-8])
protocol data unitsare predefined XML elements
<message/> [https://tools.ietf.org/html/rfc6120#section-8.2.1] is a unidirectional push mechanism (like email)
<presence/> [https://tools.ietf.org/html/rfc6120#section-8.2.2] broadcasts presence information to subscribers
<iq/> [https://tools.ietf.org/html/rfc6120#section-8.2.3] is used for bidirectional request/response interactions
IM address bookof a user and thus must be access-controlled

XMLHttpRequest [https://www.w3.org/TR/XMLHttpRequest2/] kicked off Web 2.0 but is limited
GET ws://echo.websocket.org/?encoding=text HTTP/1.1 Origin: http://websocket.org Cookie: __utma=99as Connection: Upgrade Host: echo.websocket.org Sec-WebSocket-Key: uRovscZjNol/umbTt5uKmw== Upgrade: websocket Sec-WebSocket-Version: 13
HTTP/1.1 101 WebSocket Protocol Handshake Date: Fri, 10 Feb 2012 17:38:18 GMT Connection: Upgrade Server: Kaazing Gateway Upgrade: WebSocket Access-Control-Allow-Origin: http://websocket.org Access-Control-Allow-Credentials: true Sec-WebSocket-Accept: rLHCkw/SKsO9GAH/ZSFhBATDKrU= Access-Control-Allow-Headers: content-type
send(data) API automatically decides which frame type to use

IoT Funnel Protocol

MediaStream [http://www.w3.org/TR/mediacapture-streams/] to get access to data streams (such as camera and microphone)
RTCPeerConnection [http://www.w3.org/TR/webrtc/] for audio or video calling (including encryption and bandwidth management)
RTCDataChannel [http://www.w3.org/TR/webrtc/] for peer-to-peer communication of generic data
hublink in a server's information feed
POSTs subscription request to hub with a callback URI
POSTed to callback URIs