Chris Pickel <chpickel@>
The world is a fast-moving place. More and more services are available over the internet, but at the same time, users are increasingly mobile. They spend time disconnected from the internet, and on multiple devices, including laptops, palmtops, and smart-phones. Some application domains, such as email, have readily adapted to these circumstances, but others still assume a continuous connection between a single client and the server.
Since it is impractical to change all of the protocols in use today, the best solution to this problem is to add a level of indirection–specifically, to introduce an intermediate node that can continuously talk to the server node as its "client", and discontinuously talk to actual client nodes. The protocol for communication between the intermediate and client nodes should be easily extensible, and allow both client- and server-driven events (i.e. no polling). These requirements are fit well by XMPP, an internet messaging protocol built on top of XML.
This paper describes the motivation behind and the implementation of wockd, an XMPP server written in C++, with an aim of extensibility and integration with other libraries. It compiles and runs on both Mac OS X and Linux, supports both IPv4 and IPv6 socket connections, and currently includes the foundation support for running a BitTorrent client remotely.