We’ve been interested in Comet for a long time, dating back to the days of mod_pubsub and early talks on event-driven user interfaces. Now, with the arrival of WebSockets in WebKit-based browsers, and expected in Firefox 4.x and Internet Explorer 9 once the next WebSockets specification draft is completed, and with Comet techniques used by many of the world’s most popular sites, Comet has arrived as a viable necessity for rolling-out real-time capabilities for your web applications.

Comet Server Choices

At the recent London Ajax JSMiniConf I presented a summary of the current state of Comet and Server-Side JavaScript tools.

London Ajax JSMiniConf: “A quick summary of Comet” by Dylan Schiemann from London Ajax User Group on Vimeo.

With so many great options to choose from, the choices can be overwhelming. Our current approach to Comet is as follows.

  • cometD – We have invested resources in the Bayeux protocol, the DojoX cometD client, and the Python version of the cometD server. cometD is a popular choice because of its solid performance and the widespread support of the Bayeux protocol across many servers including Jetty (Java), DWR (Java), Erlycomet (Erlang), WebSphere (Java), WebLogic (Java), WebSync (IIS, .Net), and more.
  • DWR – We have invested resources in DWR, helping bring Bayeux support to this popular framework for simple remoting between Java and JavaScript applications. DWR helps Java developers ease the transition to using JavaScript, in addition to providing real-time capabilities. In comparison to GWT, because DWR is a Java to JavaScript interface, you can code in JavaScript, the native language of the browser, and communicate with a Java back-end without the magic of translating/rewriting Java into JavaScript.
  • Hookbox – A popular upstart Comet server written in Python that offers an extremely simple approach for getting started, including the Hosted Hookbox service. It includes support for Comet Session Protocol (CSP), and it extends the js.io microtoolkit for managing a wide variety of messaging protocols.
  • Liberator and Lightstreamer – The two most popular commercial Comet servers on the market, Caplin Liberator and Lightstreamer have both improved dramatically over the past decade due to a healthy level of competition. Companies looking for a tried and true approach to the real-time web typically look at these options as well as Jetty and others. All of these options are great to work with, and each is optimized to handle performance in varying ways. While both of these platforms are proprietary and commercial, both offer limited-use free versions for commercial use as well. Watch their creators in action at the recent Comet panel, where I ask them which Comet servers they would suggest if their own product did not exist!
  • Persevere and Tunguska – The majority of our non-Dojo research and development efforts have been focused on Persevere, including the new Tunguska sub-project. Tunguska is a set of tools for building real-time applications rather than a closed black box that can’t easily be integrated with, including connection and message queues, long-polling, message routing, and clustering. It runs on top of the popular Node.js or Narwhal+Jack, the two most popular server-side JavaScript engines on the market today. We are very focused on this work today because we’re strong believers in the value of server-side JavaScript
  • XMPP – We receive a number of inquiries into XMPP server integration for chat applications. We developed the original dojox.xmpp chat client, and have assisted a number of organizations in making this work with their web applications.
  • Others – We’re also fans of Socket.IO, Orbited, Meteor, APE, Google App Engine, Tornado and a number of other projects. We’re happy to help our clients use these servers should they be appropriate for their web application development needs.

With Dojo 1.6, we rely on our new dojox.socket implementation making it easy to work with a wide variety of Comet servers, including the ones listed above.

Bottom line: there is no shortage of excellent Comet servers, so pick one that meets the needs of your application and your development team.

SitePen Comet Services

SitePen offers assistance with your real-time Comet development needs, from consulting on architecture and server choices, to development of real-time applications, to support for your ongoing JavaScript, Ajax, and HTML5 application development needs when working with a Comet server. Contact SitePen for a free 30-minute consultation to learn more about how we can help your organization create extraordinary real-time web and mobile applications.