We've been hard at work on one of the most requested features for Wildfire, HTTP Binding. This feature will allow clients to connect and communicate with Wildfire over HTTP, including AJAX web clients. There are several popular clients out there already utilizing the HTTP binding protocol, such as JWChat. All of these clients will benefit as they'll be able to connect to Wildfire without any extra configuration or external components as were needed before.
One of the things we've focused on in developing this feature is performance. With AJAX growing ever more popular, HTTP performance has become a huge concern for server administrators. Traditionally, HTTP servers are optimized for large numbers of short-lived requests (people clicking from web page to web page). AJAX breaks that model since web connections are held open for long periods of time. This problem directly applies to HTTP Binding since virtually all web IM client implementations use AJAX. To help improve the performance of the HTTP Binding component, we've upgraded our embedded Jetty server to its latest version, 6.0, which includes support for Java NIO ("New I/O") and continuations.
One of the main benefits of NIO is that you can have a small pool of threads handling I/O operations instead of one thread per a socket, which allows much greater scalability for large numbers of client connections. Jetty 6 also includes a continuations feature which further optimizes thread handling in the server. The standard Ajax programming model is to connect to the server and then wait until data is ready (such as a new IM message). Continuations allow the server to free up internal resources while the client is waiting. These two optimizations should allow Wildfire to handle a huge number of HTTP clients (significantly more than any other HTTP Binding implementation). We're just starting performance testing now, so stay tuned for actual numbers. We also added HTTP Binding support to connection managers, which provides furthers performance and scalability options.
Ease of Use
Like any other Wildfire feature we wanted HTTP Binding to be easy to use. The configuration of the feature is automatic -- no patching and no external components are necessary to get it up and running. The server administrator can configure the ports that is runs on and also various other settings such as how often clients can forward requests to Wildfire and how long to wait before Wildfire will consider a session inactive and invalidate it.
The HTTP Binding feature is only one part of the equation, as it just provides the building blocks for XMPP web clients. But we're also working on direct web client support and will have more to announce soon, along with a timeframe for when HTTP Binding will make it into an official Wildfire release.