Socket.IO arose out of developer Guillermo Rauch's quest to push data from the server to the client without the client requesting it. "It actually didn't matter what kind of project it was, the need was always there. This came down to a bigger, fundamental need: speed," Rauch said. Depending on the application, Socket.IO can save dramatic amounts of time in the communication path, he said.
The 1.0 release of Socket.IO bundlesis an engine module, Engine 1.0, which deals with transports and browser incompatibilities. Implementing a WebSocket-like API, Engine 1.0 allows for simplification of both the Socket.IO Server, which is only 1,234 lines of code, and Client, at 976 lines.
"This new engine we developed is a groundbreaking change in terms of reliability," said Rauch, who works at blogging services provider Automattic. "Instead of attempting a connection with WebSocket, then falling back to something else -- which can result in slow connection times -- we try first what we know will always work, connect immediately, then try to upgrade to WebSocket [after] we test it and know it works."
Other capabilities featured in the 1.0 version come with automated testing, in which every commit to the Socket.IO codebase triggers a testing matrix of 25 browsers, including iOS and Android systems. Scalability and an integration capability, which turns existing applications into real-time applications, are highlighted as well. Also featured are streamlined APIs and better debugging. A planned Socket.IO 2.0 release is expected to abandon support for some older browsers and not bundle modules such as the JSON serializer.
Rauch said he started developing Socket.IO shortly after Node.js came out in 2009. The 1.0 release, which became available in late May, involved more than 30 contributors. Socket.IO users have included Microsoft Office, Yammer, and Zendesk, according to Socket.IO's backers.