Introducing WaterSpout: A light weight, real-time communication server
Over the last several months the development team at OnForce has been working a cutting edge web server, called WaterSpout, that will change the way OnForce is able to deliver information to our users. WaterSpout takes advantage of emerging standards in web communication to eliminate the delay between an event occurring on our system and the affected users being notified.
Traditional notification techniques require the browser to send background requests to the server at timed intervals to ask for updates. This approach comes with considerable overhead and has a delay which is dependant on the timed interval. Decreasing the interval increases the overhead; increasing the interval delays the information even more. A delicate balance is needed between scalability and timeliness.
WaterSpout utilizes the new HTML 5 websockets standard to provide a constant connection between the browser and the server. This allows for constant contact with the end user and a minimal amount of overhead. The reduced overhead as well as the specialized nature of the code running on the WaterSpout server make for extremely efficient communications between the user and the server.
Using WaterSpout, we can notify our users of events as they happen. Instead of waiting for the user to click into a work order, we can pop up a notification of the event the instant it happens. Service pros on the system will not have to wait for an email or a text message to know that they have been routed a new work order or that the buyer has approved a spend limit increase request. WaterSpout can notify pros of the new work order before the email even goes out. The support team can be notified about a cancelled work order as it happens allowing us to be the ultimate partner in service.
Chris Lewis and I have been asked to present on the topic of real-time communications via the web at this years International PHP Conference in Berlin, Germany. We have also been selected to speak at this years LinuxTag conference. As part of the presentations they will be discussing WaterSpout.
The project is open source. Comments and contributions are always welcomed.

June 3rd, 2010 at 4:00 pm
I saw your session on the IPC in Berlin and currently I’m implementing some test scripts, if all works well we will eventually use in production. Let’s see how it performs. Do you have any comparison resources to Jetty, phpwebsockets, jwebsocket, kaazing and other servers?
Do you plan to put the source code on github?
Perhaps you should also add your project to the german wikipedia page where server implementations are listed:
http://de.wikipedia.org/wiki/WebSockets#Server-Implementierungen
June 7th, 2010 at 8:25 am
@PHPGangsta:
It’s hard to compare benchmarks because I haven’t seen any real benchmarks for the other servers. Most of them are simple hello world or echo systems that don’t do any real work. It’s easy to make a server that can just spit back what you send it, but to set something up for real request processing is another story. If you have a Jetty or Kaazing set up that does some real work, I would love to see the numbers on it.
Our source is currently on Google Code: http://code.google.com/p/waterspout/
I’ll have to brush up on my German before I can edit that page.
Thanks.