Channels

Services

SocketStream launches new way for web apps - Update

At a London Hacker News meetup, AOL developers took the opportunity to publicly launch SocketStream, a new "blazingly fast" and "real time" web framework. One of the developers, Owen Barnes, presented the full stack framework built around the idea of a Single-page Application; the first reactions on Twitter included: "I think I've just seen what's going to kill Rails. It's called SocketStream". The project is described as "highly experimental but usable" by the developers. The open source (MIT licence) framework is now an AOL sponsored project with developers working full time on it.

SocketStream is based on the JavaScript-running, event-driven Node.js server, Redis key/value store, CoffeeScript and Socket.io. The choice of Node.js allows a developer to use either JavaScript or CoffeeScript as their language of choice, while Redis provides a pub/sub system to allow messages to effectively flow around the system. Socket.io provides a reliable WebSockets implementation.

SocketStream then uses WebSockets to maintain a bi-directional permanent channel between the client and server, and creates what appears, in code, as a shared "SS" object in the namespace, with all data actually being exchanged as JSON-encoded information. Consoles at either end, client or server, can access and call methods on the shared object. Inspired by Rails' developer experience, a SocketStream "new" command creates a project hierarchy with server, client and shared trees. The folders within that hierarchy are reflected in the shared object. Static resources, such as HTML, CSS and client-side code, are delivered to browsers as they log in, minified, so they are quickly available.

Audience members participated in the SocketStream SocketRacer demo
A demonstration of the capabilities of SocketStream at the Hacker News event allowed users to race cars on a CSS3 animated race track; The H was in attendance and got the demo running on the stock Safari browser on an iPad2. Other examples included a dashboard and group chat. Within AOL, the project has already been used to implement internal chat systems and an ad performance analysis system.

The SocketStream system is still in its early stages of development. Barnes noted that the developers still have to address how to implement a testing framework beyond using Node.js testing. Scaling is also an issue as SocketStream is currently tied to a single CPU core, but the plan is to implement horizontal scaling and load-balancing on the browser side. They are also working on implementing a "single model" for validation on both server and client and enabling easy development of CRUD applications. Browser support is also limited; Chrome and Safari work but Firefox and IE support, using flashsockets, is temperamental.

SocketStream is hosted on GitHub at github.com/socketstream/socketstream where documentation on how to get started with the framework and examples is also available. The developers are looking to expand the SocketStream community and encourage other developers to participate in completing and enhancing the framework.