Comparison of WebSocket implementations
{{short description|None}}
{{Multiple issues|{{primary sources|date=September 2011}}
{{more citations needed|date=September 2011}}
{{update|inaccurate=yes|date=March 2013}}}}
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.
{{sort-under}}
class="wikitable sortable sort-under collapsible" style="margin-right:0; font-size:85%;" |
style="width:15em"|
!Client (library) !Server (library) !Version compared !Protocol (spec) version support !Protocol test report !License !Implementation: language, environment !API: language, environment !Self-hosted server !Text message support !Binary message support !API message-based !API frame-based !API streaming input-output !Flow-control framework !Automatic pongs for pings !Automatic heartbeat pings !Manual pings-pongs !Frame size limit |
---|
{{rh}}| Google Chrome 15[https://www.chromium.org/ Chromium website]
|{{yes}} |{{no}} |15.0.874.8 |8 (10) | |{{partial|Complex}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{no}}, No |{{no}} |{{yes}} |{{no}} |{{no}} | ≥ 16 MB |
{{rh}}| Google Chrome 16
|{{yes}} |{{no}} |16.0.912 |13 (17/RFC 6455) | |{{partial|Complex}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{no}}, No |{{no}} |{{yes}} |{{no}} |{{no}} | ≥ 16 MB |
{{rh}}| Mozilla Firefox 7[https://developer.mozilla.org/en/Necko Necko website]
|{{yes}} |{{no}} |7 beta |8 (10) | |C++, [https://wiki.mozilla.org/Modules/Core#Necko Necko] |{{no}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{no}}, No |{{no}} |{{yes}} |{{no}} |{{no}} | < 16 MB |
{{rh}}| Mozilla Firefox 11
|{{yes}} |{{no}} |11.0 |13 (17/RFC 6455) | |C++, [https://wiki.mozilla.org/Modules/Core#Necko Necko] |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{no}}, No |{{no}} |{{yes}} |{{no}} |{{no}} | < 2 GB |
{{rh}}| Achex WS[http://www.achex.ca/ Achex WS website]
|{{yes}} |{{yes}} |2.17 |RFC 6455 | |{{free|Commercial}} |C++ |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{no}} |{{yes}} | 2^16 |
{{rh}}| Kaazing WebSocket Gateway[http://kaazing.com/ Kaazing website]
|{{yes}} |{{yes}} |5.0 Dec 2014 |RFC 6455 | |{{partial|APL2 (Community Edition), commercial (Enterprise Edition)}} |JavaScript, Flash/Flex, Silverlight, Objective-C & iOS, Java, Java & Android, .NET, Xamarin |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |memory-limited, configurable |
{{rh}}| Lightstreamer[https://lightstreamer.com/ Lightstreamer website]
|{{yes}} |{{yes}} |7.4.6 |RFC 6455 | |{{partial|Commercial, freeware}} |Java |JavaScript, Android, Java, Swift, iOS, macOS, tvOS, watchOS, visionOS, .NET Standard, C++, Python, Flash/Flex, Silverlight, J2ME |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |Data driven, configurable |
{{rh}}| MigratoryData[https://migratorydata.com MigratoryData website]
|{{yes}} |{{yes}} |6.0.5 |RFC 6455 | |{{nonfree|Commercial}} |Java |JavaScript, iOS, Android, Java, C++, .NET, PHP, Node.js, Python |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{no}}, No |{{yes}} |{{yes}} |{{yes}} |{{no}} |263, configurable |
{{rh}}| Mongoose[https://mongoose.ws Mongoose Library website]
|{{yes}} |{{yes}} |7.9 |RFC 6455 | |{{partial|GPL, commercial}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |263, configurable |
{{rh}}| noPoll[http://aspl.es/nopoll noPoll website]
|{{yes}} |{{yes}} |0.3.2 |RFC 6455 | |{{free|LGPL 2.1}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |memory-limited, configurable |
{{rh}}| POCO C++ Libraries[http://pocoproject.org/docs/Poco.Net.WebSocket.html POCO C++ Libraries documentation]
|{{yes}} |{{yes}} |1.4.6 |RFC 6455 | |{{free|Boost}} |C++ |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{no}} |{{no}} |{{no}} |{{yes}} |memory-limited, configurable |
{{rh}}| PowerWebSockets[https://www.noemax.com/powerwebsockets/ PowerWebSockets website]
|{{yes}} |{{yes}} |15.176.5188 |RFC 6455 |Test report[https://www.noemax.com/powerwebsockets/autobahn/index.html PowerWebSockets Autobahn|Testsuite report] |{{nonfree|Commercial}} |.NET |.NET Framework, .NET Compact Framework, Xamarin. iOS, Xamarin.Android, Windows Phone, Silverlight, Mono |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |memory-limited, configurable |
{{rh}}| QtWebSockets[http://qt-project.org/wiki/QtWebSockets QtWebSockets website]
|{{yes}} |{{yes}} |1.0 |RFC 6455 | |{{free|LGPL}} |Qt |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |memory-limited, configurable |
{{rh}}| RingSocket[https://github.com/wbudd/ringsocket RingSocket (GitHub)]
|{{no}} |{{yes}} |1.0 |RFC 6455 | |{{free|MIT}} |C |C |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{no}} |{{yes}} |{{yes}} |{{no}} |{{no}} |unlimited/configurable |
{{rh}}| Resin[http://www.caucho.com/ Caucho website]
|{{no}} |{{yes}} |4.026 |RFC 6455 | |{{partial|GPL, commercial}} |Java | |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{no}} |memory-limited, configurable |
{{rh}}| WebSocketListener[https://vtortola.github.io/WebSocketListener/ WebSocketListener website]
|{{no}} |{{yes}} |2.1.3 |RFC 6455 | |{{free|MIT}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} | Configurable |
{{rh}}| Wt[http://www.webtoolkit.eu/ wt website]
|{{no}} |{{yes}} |3.2.0 |0,7,8,13 (17) |[? Report] |{{partial|GPL, commercial}} |C++ | |{{yes}} |{{yes}} |{{no}} |{{no}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{no}} | memory-limited, configurable |
{{rh}}| XSockets.NET[http://xsockets.net/ XSockets.NET website]
|{{yes}} |{{yes}} |5.* |RFC 6455 | |{{nonfree|Commercial}} |.NET |Server-languages: Windows (.NET), Unix-Linux (Mono) Client-languages: JavaScript, .NET, Mono |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |memory-limited, configurable |
{{rh}}| RIWA Gateway[http://www.cazaayan.com/riwa_gateway.html RIWA website]
|{{yes}} |{{yes}} | 2.01 | RFC 6455 | |{{nonfree|Commercial}} |Java |Java, Android, iOS, JavaScript |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{yes}} |{{no}} |{{no}} |memory-limited, configurable |
{{rh}}| μWebSockets[https://github.com/uNetworking/uWebSockets μWebSockets (GitHub)]
|{{no}} |{{yes}} |v0.14.0 |RFC 6455 |Test report[https://unetworking.github.io/uWebSockets.js/report.pdf μWebSockets Autobahn|Testsuite report] |{{free|Apache License 2.0}} |C++, epoll, Libuv, Boost Asio |C++, JavaScript, Node.js |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |memory-limited, configurable |
{{rh}}| Boost.Beast[https://github.com/boostorg/beast Boost.Beast (GitHub)]
|{{yes}} |{{yes}} |94 |RFC 6455 |{{free|Boost}} |C++ |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |unlimited (packets streamed to user code), permessage-deflate also unlimited (chunked) |
{{rh}}| libwebsockets[https://libwebsockets.org libwebsockets.org website]
|{{yes}} |{{yes}} |2.4 |RFC 6455 + RFC 7692 |Test report[https://libwebsockets.org/reports/clients/index.html libwebsockets.org lws Autobahn|Testsuite report] |{{free|LGPL2 + SLE}} |C, libuv, {{wdrl|Q63064998}}, libevent, poll, external poll loop integration, OpenSSL, mbedTLS |C, HTML5, JavaScript |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}}, yes |{{yes}} |{{yes}} |{{yes}} |{{yes}} |unlimited (packets streamed to user code), permessage-deflate also unlimited (chunked) |
{{rh}}| websocket++[https://github.com/zaphoyd/websocketpp/blob/master/readme.md websocket++ website]
|{{yes}} |{{yes}} |0.8.2 |RFC 6455 | |{{free|BSD}} |? |? |? |? |? |? |? |? |? |? |? |
{{rh}}| facil.io[http://facil.io facil.io website]
|{{yes}} |{{yes}} |0.7.1 |RFC 6455 | |{{free|MIT}} |C |C |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}}, yes |{{yes}} |{{yes}} |{{yes}} |{{yes}} | configurable client to server limits. unlimited (chunked) server to client. |
{{rh}}| oatpp-websocket[https://oatpp.io oatpp.io website]
|{{yes}} |{{yes}} |1.3.0 |RFC 6455 | |{{free|Apache License 2.0}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{yes}} |{{no}} |{{no}} |{{yes}} |unlimited (packets streamed to user code) |
Notes
{{Reflist}}
{{Portal bar|Internet}}