What browsers support HTML5 WebSocket API?
Solution 1:
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