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