Events and protocol bindings
The Web of things is not restricted to a single networking technology, and indeed the range of networking technologies continues to evolve rapidly. Web applications may involve a multiple devices with a wide range of capabilities, and access to a combination of local and remote services.
Examples of networking technologies
- Ethernet over twisted pair wires or optical fiber
- Ethernet over the building's electrical power wiring
- DSL over copper phone lines
- WiFi and WiMax
- GSM and other kinds of cellular networks
- ZigBee for sensor networks
- Firewire and USB for connecting media devices
- Peer to Peer overlay networks
Overlay transport protocols may be layered on top of existing networks, e.g. peer to peer protocols for media streaming that run on top of existing TCP/IP protocols.
Firewalls and network address translation (NAT) offer further challenges.
A great simplication for web applications is to expose devices and services as proxy objects in an XML document object model. Applications can then communicate with local and remote services in uniform manner by targeting events at the corresponding proxy object. Similarly, applications can respond to events sent by such services by setting an event listener on the proxy object.
Work is needed on bindings to particular protocols and also on enabling event flows across security boundaries like NATs. A first step is to define how each event can be serialized to XML (or perhaps to JSON). The next step is to defining bindings to specific protocols, some possible candidates are:
HTTP is very widely established as a means for browsers to download web pages from websites. It is also used as a transport protocol for SOAP and REST-based Web Services. However, it isn't very effective when it comes to incoming connections which are typically blocked by the Firewall or NAT.
SIP was developed for initiating media streams such as VoIP based telephony and is now being adopted for cellular networks as part of the transition to IMS (IP Multimedia Subsystem). SIP has been extended for use with exchanging presence information using XML payloads.
XMPP was developed to support presence and instant messaging and has been popularized by Jabber and GoogleTalk. XMPP also supports XML payloads, and has recently been extended to enable video and telephony streams,
A number of techniques have been developed for establishing peer to peer connections across NATs. STUN caters for simple transversal of UDP over NATS. STUNT extends STUN to include TCP functionality, something that is important for reliable exchange of events. TURN complements STUN for situations where STUN fails, e.g. symmetric NAT.