Comparison of WebSocket implementations
Encyclopedia
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
Autobahn for Python |
Google Chrome 15 Google Chrome Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or... |
cwebsocket | Mozilla Firefox 7 |
Mozilla Firefox 8 |
Jetty Jetty (web server) Jetty is a pure Java-based HTTP client/server, WebSocket client/server and servlet container developed as a free and open source project as part of the Eclipse Foundation... |
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) | (Threaded and Tornado) |
|||||||||||||
Server (library) | (For Apache HTTPD web server) | (CherryPy) |
||||||||||||
Version compared | 0.4.3 |
15.0.874.8 |
r32 |
7 beta |
8.0a/9.0a |
7.5.1 |
0.9.4/0.9.2 |
? |
? |
0.6b5 |
v0.0.13 |
0.1.1 |
v6.5 |
2010-10-10 |
Protocol (Spec) version support | 8, 13 (10-17) | 8 (10) | Hixie 76 (0) | 8 (10) | 8 (10) | 0-13 (0-13) | Hixie 75/76, HyBi 7,8,10 | 8 (10) | draft 75/76 (Hixie), 7,8,13 (HyBi) https://github.com/disconnect/apache-websocket/blob/master/README.md | 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 MPL -Astronomy and science:* Mars Polar Lander* Max Planck Institute for the Science of Light* Maximum parcel level – level in atmosphere where convective plume stops after reaching its level of neutral buoyancy... & GPL & LGPL |
MPL MPL -Astronomy and science:* Mars Polar Lander* Max Planck Institute for the Science of Light* Maximum parcel level – level in atmosphere where convective plume stops after reaching its level of neutral buoyancy... & GPL & LGPL |
Apache 2 & EPL Eclipse Public License The Eclipse Public License is an open source software license used by the Eclipse Foundation for its software. It replaces the Common Public License and removes certain terms relating to litigations related to patents.... |
Apache 2 | LGPL (v2) | Apache 2 | BSD | Apache 2 | BSD | Commercial | BSD |
Implementation language/environment | Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... / Twisted Twisted (software) Twisted is an event-driven network programming framework written in Python and licensed under the MIT License.Twisted projects variously support TCP, UDP, SSL/TLS, IP Multicast, Unix domain sockets, a large number of protocols , and much more... |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... / WebKit WebKit WebKit is a layout engine designed to allow web browsers to render web pages. WebKit powers Google Chrome and Apple Safari and by October 2011 held over 33% of the browser market share between them. It is also used as the basis for the experimental browser included with the Amazon Kindle ebook... |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... / Sockets |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... / Necko |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... / Necko |
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... / J2SE & Android |
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... / J2SE & Android & Objective-C & IOS |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... / Sockets |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... / Sockets |
Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
JavaScript JavaScript JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.... / Node.js Node.js Node.js is a software system designed for writing highly-scalable internet applications, notably web servers.Programs are written in JavaScript, using event-driven, asynchronous I/O to minimize overhead and maximize scalability.... |
Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... Windows IOCP |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... / Boost Asio Asio C++ library Asio is a freely available, open source, cross-platform C++ library for network programming. It provides developers with a consistent asynchronous I/O model using a modern C++ approach.... |
API language/environment | Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... / Twisted Twisted (software) Twisted is an event-driven network programming framework written in Python and licensed under the MIT License.Twisted projects variously support TCP, UDP, SSL/TLS, IP Multicast, Unix domain sockets, a large number of protocols , and much more... |
JavaScript JavaScript JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.... / HTML5 |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... |
JavaScript JavaScript JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.... / HTML5 |
JavaScript JavaScript JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.... / HTML5 |
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... / javax.servlet |
Java Java (programming language) Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities... / J2SE & Android & Objective-C & IOS |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... / own event loop |
C C (programming language) C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.... / Sockets |
Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
JavaScript JavaScript JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.... / Node.js Node.js Node.js is a software system designed for writing highly-scalable internet applications, notably web servers.Programs are written in JavaScript, using event-driven, asynchronous I/O to minimize overhead and maximize scalability.... |
Python Python (programming language) Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive... |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... Windows |
C++ C++ C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell... |
Text Message support | ||||||||||||||
Binary Message support | ||||||||||||||
Message-based API | ||||||||||||||
Frame-based API | ||||||||||||||
Streaming API Input/Output | /Yes http://www.tavendo.de/autobahn/tutorial/streaming.html | /No | /? | /No | /No | /No | /No | /Yes | /? | /? | /No | /No | /Yes | /No |
Flow-control framework | http://www.tavendo.de/autobahn/tutorial/producer.html | |||||||||||||
Automatic Pongs for Pings | ||||||||||||||
Automatic Heartbeat Pings | ||||||||||||||
Manual Pings/Pongs | ||||||||||||||
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 |