What browsers support HTML5 WebSocket API?

html, javascript, network-programming, web-applications, websocket

Solution

Client side

- Hixie-75:

- Chrome 4.0 + 5.0

- Safari 5.0.0

- HyBi-00/Hixie-76:

- Chrome 6.0 - 13.0

- Safari 5.0.2 + 5.1

- iOS 4.2 + iOS 5

- Firefox 4.0 - support for WebSockets disabled. To enable it see here.

- Opera 11 - with support disabled. To enable it see here.

- HyBi-07+:

- Chrome 14.0

- Firefox 6.0 - prefixed: `MozWebSocket`

- IE 9 - via downloadable Silverlight extension

- HyBi-10:

- Chrome 14.0 + 15.0

- Firefox 7.0 + 8.0 + 9.0 + 10.0 - prefixed: `MozWebSocket`

- IE 10 (from Windows 8 developer preview)

- HyBi-17/RFC 6455

- Chrome 16

- Firefox 11

- Opera 12.10 / Opera Mobile 12.1

Any browser with Flash can support WebSocket using the web-socket-js shim/polyfill.

See caniuse for the current status of WebSockets support in desktop and mobile browsers.

See the test reports from the WS testsuite included in Autobahn WebSockets for feature/protocol conformance tests.

Server side

It depends on which language you use.

In Java/Java EE:

- Jetty 7.0 supports it (very easy to use) `V 7.5 supports RFC6455` - Jetty 9.1 supports javax.websocket / JSR 356)

- GlassFish 3.0 (very low level and sometimes complex), Glassfish 3.1 has new refactored Websocket Support which is more developer friendly `V 3.1.2 supports RFC6455`

- Caucho Resin 4.0.2 (not yet tried) `V 4.0.25 supports RFC6455`

- Tomcat 7.0.27 now supports it `V 7.0.28 supports RFC6455`

- Tomcat 8.x has native support for websockets RFC6455 and is JSR 356 compliant

- JSR 356 included in Java EE 7 will define the Java API for WebSocket, but is not yet stable and complete. See Arun GUPTA's article WebSocket and Java EE 7 - Getting Ready for JSR 356 (TOTD #181) and QCon presentation (from 00:37:36 to 00:46:53) for more information on progress. You can also look at Java websocket SDK.

Some other Java implementations:

- Kaazing Gateway

- jWebscoket

- Netty

- xLightWeb

- Webbit

- Atmosphere

- Grizzly

- Apache ActiveMQ `V 5.6 supports RFC6455`

- Apache Camel `V 2.10 supports RFC6455`

- JBoss HornetQ

In C#:

- XSockets.NET

- SuperWebSocket

- Nugget

- Alchemy-Websockets

- Fleck

- [SignalR] 34

In PHP:

- Ratchet

- phpwebsocket.

- Extendible Web Socket Server

- phpdaemon

In Python:

- pywebsockets

- websockify

- gevent-websocket, gevent-socketio and flask-sockets based on the former

- Autobahn

- Tornado

In C:

- libwebsockets

In Node.js:

- Socket.io : Socket.io also has serverside ports for Python, Java, Google GO, Rack

- sockjs : sockjs also has serverside ports for Python, Java, Erlang and Lua

- WebSocket-Node - Pure JavaScript Client & Server implementation of HyBi-10.

Vert.x (also known as Node.x) : A node like polyglot implementation running on a Java 7 JVM and based on Netty with :

- Support for Ruby(JRuby), Java, Groovy, Javascript(Rhino/Nashorn), Scala, ...

- True threading. (unlike Node.js)

- Understands multiple network protocols out of the box including: TCP, SSL, UDP, HTTP, HTTPS, Websockets, SockJS as fallback for WebSockets

Pusher.com is a Websocket cloud service accessible through a REST API.

DotCloud cloud platform supports Websockets, and Java (Jetty Servlet Container), NodeJS, Python, Ruby, PHP and Perl programming languages.

Openshift cloud platform supports websockets, and Java (Jboss, Spring, Tomcat & Vertx), PHP (ZendServer & CodeIgniter), Ruby (ROR), Node.js, Python (Django & Flask) plateforms.

For other language implementations, see the Wikipedia article for more information.

The RFC for Websockets : RFC6455

Problem

I am going to develop an instant messaging application that runs in the browser. What browsers support the WebSocket API?

Original source