With increasing support for HTML5 and WebSocket in modern web browsers and mobile devices, cutting-edge web application developers are turning their attention to building apps that leverage true real-time communication between browsers and back-end servers.
On paper, WebSockets look very promising: bandwidth overhead is a tiny fraction of that of HTTP and latency is drastically reduced. But only when it comes to actual deployment do organizations find that seemingly small gotchas can fundamentally break the envisioned revolutionary experience.
The most frequently reported problem in the WebSocket developer community is that for one reason or another the WebSocket connection cannot be established between the browser and the WebSocket server. This issue is often caused by the simple fact that the browser doesn’t support WebSockets… yet. Another reason is that the network infrastructure, proxies, and routers are configured in such a way that prevents the full duplex communication over WebSockets. In some of these cases using WebSocket secure (WSS), or WebSocket over TLS, is a reasonable fallback option, but at times even this approach may not be sufficient.
Another problem older browsers pose is the lack of support for Cross Origin Resource Sharing (CORS). CORS is a browser specification that allows a Web page to establish a [WebSocket] connection to a server that is different from the one the Web page originated from. For example, the static HTML content of the page is accessed from Server 1, and dynamic content is streamed to the page through a WebSocket connection from Server 2. When exploring WebSockets and during POCs it’s often overlooked that implementing a topology like this without CORS can be cumbersome at best due to the security restrictions enforced by the browsers.
As developers, we should be focusing on building engaging user experiences and business logic rather than being forced to deal with the legacy platform issues.
An active voice in the W3C and IETF standards bodies for WebSockets, Kaazing offers a WebSocket gateway that provides the industry’s most extensive WebSocket emulation. The Kaazing Platform implements clever, behind-the-scenes emulation techniques that enable any browser (modern or not) to support WebSockets. Kaazing’s WebSocket emulation is a proven technology, currently deployed in a number of enterprise customers all over the world, and gives end users a hassle-free, “it just works” experience. It’s not only end users who benefit from the Gateway: developers can work in a fully transparent environment, using client libraries that enable them to simply code against WebSocket APIs. When an end user interacts with a WebSocket application, Kaazing’s patent pending WebSocket Acceleration (TM) technology kicks in when native WebSocket support is unavailable, giving the user a seamless experience and a latency barely higher than what your physical network supports.
At Kaazing, we strongly believe that as a developer, you must have the ability to provide a first class experience to every user of your applications on whatever browser or mobile device they choose. With Kaazing WebSocket Gateway, the performance of the emulated WebSocket connection is virtually the same as native WebSocket performance.
To see sample applications of Kaazing WebSocket Gateway in action, check out our demos at http://demo.kaazing.com. The demos on this page work on mobile devices and in browsers as ancient as Internet Explorer 6.