OSCON: Orbited Pushes Data To Web Pages

Published 2008-07-25    Printer-friendly version

Orbited is an implementation of Comet, and in programming terms Comet is a web application model where the client, via Javascript, keeps an open connection back to the server. This allows the server to push data back to the client without having to first wait for a request.

Michael Carter and Jacob Rus presented Orbited in the form of a dialog over the confusion between Comet/Orbited and standard TCP socket communication. In essence Orbited is a TCP layer that works over port 80; normal socket communications are often blocked by firewalls/routers. Orbited is also a safe transport layer which can recover from dropped packets.

Currently Orbited is a separate server which runs alongside your web server. In a typical Orbited scenario when the browser requests a page from the web server, the web server communicates with the Orbited server; from that point on the Orbited server communicates directly with the browser via an event handler.

Orbited can be used to present data such as IRC or email (e.g. Google mail) to the browser. One of the topics Carter and Rus argued in their unusually-structured presentation was whether to handle protocols on the server or on the client. In the case of IRC, one choice is to convert IRC to something like JSON for ease of handling in the browser; the other is to push the raw IRC data out to the browser and use Javascript to convert the IRC stream into something displayable. The latter is a more efficient approach since it lightens the server load and leverages computing power on the browser machines.

At present Orbited is a only available as a separate server. In part this is because web servers generally spawn a new thread for each client. If you kept all those connections open you could run out of processes. Also Orbited is written in Python to enable rapid development, but Python can't use multiple CPUs because it has a global interpreter lock. If you wanted the current Orbited server to integrate with a web server you'd have to have multiple instances each with its own IP address or port. A multi-threaded integrated sever is in testing but isn't expected to be completed until after the Python version has settled down.

Also available is the js.io library which provides client-level protocol handling. Protocols currently supported or in development include AMQP, IMAP, IRC, LDAP, SMTP, SSH, Stomp, telnet and XMPP. A multi-player browser-base game built on Orbited is available at unicommand.com.

Printer-friendly version

Reader Comments

To add a comment to this article you must log in.