Comparison of WebSocket implementations

Comparison of WebSocket implementations

Contents

Comparison of WebSocket Implementations

Rationale

The WebSocket protocol is implemented in different browsers, run-time environments and libraries acting as clients or servers. The intention of this comparison is to show different features of WebSocket implementations to help developers and users making informed decisions regarding deployment and use.

Table of WebSocket implementations

cwebsocket Mozilla
Firefox 7
Mozilla
Firefox 8
Jetty UnittWebSocket libwebsockets apache-websocket pywebsocket WebSocket-Node ws4py The Server Framework WebSocket++
Project Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage Homepage
Client (library) Yes Yes No Yes Yes Yes Yes Yes No No Yes Yes
(Threaded and Tornado)
Yes Yes
Server (library) Yes No Yes No No Yes No Yes Yes (For Apache HTTPD web server) Yes Yes Yes
(CherryPy)
Yes Yes
Version compared 0.4.3
30 Oct 2011
15.0.874.8
12 Sep 2011
r32
29 Aug 2010
7 beta
12 Sep 2011
8.0a/9.0a
12 Sep 2011
7.5.1
9 Sep 2011
0.9.4/0.9.2
29 Sep 2011
?
24 Aug 2011
?
29 Oct 2011
0.6b5
30 Aug 2011
v0.0.13
18 Aug 2011
0.1.1
21 Aug 2011
v6.5
5 Sep 2011
2010-10-10
10 Oct 2011
Protocol (Spec) version support 8, 13 (10-17) 8 (10) Hixie 76 (0) 8 (10) 8 (10) 0-13 (0-13)[1] Hixie 75/76, HyBi 7,8,10 8 (10) draft 75/76 (Hixie), 7,8,13 (HyBi) [1] 8 (12) 8 (10) 8 (10) Hixie 76, HyBi 7,8,13 7,8,13 (17)
Protocol Test Report Report (Client)
Report (Server)
Report [? Report] Report Report JUnit
Autobahn
[? Report] [? Report] [? Report] [? Report] Report Report Report Report (Client)
Report (Server)
License Apache 2 complex MIT MPL & GPL & LGPL MPL & GPL & LGPL Apache 2 & EPL Apache 2 LGPL (v2) Apache 2 BSD Apache 2 BSD Commercial BSD
Implementation language/environment Python / Twisted C++ / WebKit C / Sockets C++ / Necko C++ / Necko Java / J2SE & Android Java / J2SE & Android & Objective-C & IOS C / Sockets C / Sockets Python JavaScript / Node.js Python C++ Windows IOCP C++ / Boost Asio
API language/environment Python / Twisted JavaScript / HTML5 C JavaScript / HTML5 JavaScript / HTML5 Java / javax.servlet Java / J2SE & Android & Objective-C & IOS C / own event loop[2] C / Sockets Python JavaScript / Node.js Python C++ Windows C++
Text Message support Yes Yes ? Yes Yes Yes Yes Yes ? ? Yes Yes Yes Yes
Binary Message support Yes No ? No No Yes Yes Yes ? ? Yes Yes Yes Yes
Message-based API Yes Yes ? Yes Yes Yes Yes No [3] ? ? Yes Yes Yes Yes
Frame-based API Yes No ? No No Yes Yes No [4] ? ? Yes Yes Yes No
Streaming API Input/Output Yes/Yes [2] No/No ?/? No/No No/No No/No[5] No/No[5] Yes/Yes ?/? ?/? No/No No/No Yes/Yes No/No
Flow-control framework Yes [3] No ? No No Yes[6] Yes[6] Yes ? ? No No Yes[6] Yes[6]
Automatic Pongs for Pings Yes Yes ? Yes Yes Yes Yes Yes ? ? Yes Yes Yes Yes
Automatic Heartbeat Pings No No ? No No No No No ? ? Optional No No No
Manual Pings/Pongs Yes No ? No No Yes Yes Yes ? ? Yes Yes Yes Yes
Frame Size Limit 2^63 (streaming API)
memory-limited/configurable (other APIs)
>=16MB
(memory-limited?)
 ? <16MB <16MB 2^32 tx
2^63 rx
2^32 tx (configurable)
2^63 rx (configurable)
2^63  ?  ? memory-limited, configurable memory-limited 2^63 or configurable limit memory-limited, configurable

Notes

  1. ^ Server accepts 0-13, Client sends only 13.
  2. ^ There is a low-level support for integration with external event loops.
  3. ^ Users can build a message-based layer on top of the streaming API provided.
  4. ^ Users can build a frame-based layer on top of the streaming API provided.
  5. ^ a b Frames larger that the buffer are fragmented and passed to the message layer as a stream of smaller frames.
  6. ^ a b c d 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.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Comparison of layout engines (HTML5) — HTML HTML and HTML5 Dynamic HTML XHTML XHTML Mobile Profile and C HTML Canvas element Character encodings Document Object Model Font family HTML editor HTML element HTML Frames HTML5 video HTML scrip …   Wikipedia

  • Comet (programming) — Comet is a web application model in which a long held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it.[1][2] Comet is an umbrella term, encompassing multiple techniques for achieving this… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”