Comparison of WebSocket implementations

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The WebSocket protocol is implemented in different web browsers, web servers and run-time environments and libraries acting as clients or servers. The following is a table of different features of notable WebSocket implementations.


Client (library) Server (library) Version compared Protocol (spec) version support Protocol test report License Implementation language/environment API language/environment Text message support Binary message support Message-based API Frame-based API Streaming API input/output Flow-control framework Automatic pongs for pings Automatic heartbeat pings Manual pings/pongs Frame size limit
Lightstreamer[1] Yes Yes 5.1.1
05 Mar 2013
RFC 6455 [? Report] Both Commercial and Freeware Java JavaScript / .Net / Java / Flash/Flex / iOS / Android / Silverlight / Windows Phone / WinRT Yes No Yes No No/No Yes Yes Yes No data-driven, configurable
Google Chrome 15[2] Yes No 15.0.874.8
12 Sep 2011
8 (10) complex C++ / WebKit JavaScript / HTML5 Yes No Yes No No/No No Yes No No ≥ 16 MB
(memory-limited?)
Google Chrome 16[2] Yes No 16.0.912
13 Dec 2011
13 (17/RFC 6455) complex C++ / WebKit JavaScript / HTML5 Yes No Yes No No/No No Yes No No ≥ 16 MB
(memory-limited?)
Mozilla Firefox 7[3] Yes No 7 beta
12 Sep 2011
8 (10) MPL & GPL & LGPL C++ / Necko JavaScript / HTML5 Yes No Yes No No/No No Yes No No < 16 MB
Mozilla Firefox 11[3] Yes No 11.0
13 Mar 2012
13 (17/RFC 6455) MPL & GPL & LGPL C++ / Necko JavaScript / HTML5 Yes Yes Yes No No/No No Yes No No < 2 GB
(memory-limited?)
Jetty[4] Yes Yes 7.5.1
9 Sep 2011
0-13,RFC 6455[5] JUnit Apache 2 & EPL Java / J2SE & Android Java / javax.servlet Yes Yes Yes Yes No/No[6] Yes[7] Yes No Yes 232 tx
263 rx
Resin[8] No Yes 4.026
29 Feb 2012
RFC 6455 GPL Java / C Java Yes Yes Yes No Yes No Yes No No memory-limited, configurable
Wt (web toolkit)[9] No Yes 3.2.0
30 Nov 2011
0,7,8,13 (17) [? Report] GPL & commercial C++ / Boost Asio C++ Yes Yes No No No Yes Yes Yes No memory-limited, configurable
Tornado[10] No Yes 2.3 7, 8, 13 (RFC 6455) Apache 2 Python Python Yes Yes Yes Yes [11] No No Yes No Yes[12] 263

Notes [edit]

  1. ^ Lightstreamer Homepage
  2. ^ a b Chromium Homepage
  3. ^ a b Necko Homepage
  4. ^ Jetty Homepage
  5. ^ Server accepts 0-13 & RFC 6455, client sends only RFC 6455.
  6. ^ Frames larger that the buffer are fragmented and passed to the message layer as a stream of smaller frames.
  7. ^ Internal queuing is avoided so that natural TCP/IP backpressure is used for flow control. A slow application consuming messages will eventually block a busy sender.
  8. ^ Caucho Homepage
  9. ^ Homepage
  10. ^ Tornado Homepage
  11. ^ hidden in private methods, but still accessible
  12. ^ requires the use of the frame API