Comparison of WebSocket implementations
Appearance
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
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 | 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 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Google Chrome 15[1] | Yes | No | 15.0.874.8 12 Sep 2011 |
8 (10) | Complex | C++, WebKit | JavaScript, HTML5 | No | Yes | Yes | Yes | No | No, No | No | Yes | No | No | ≥ 16 MB (memory-limited?) | |
Google Chrome 16[1] | Yes | No | 16.0.912 13 Dec 2011 |
13 (17/RFC 6455) | Complex | C++, WebKit | JavaScript, HTML5 | No | Yes | Yes | Yes | No | No, No | No | Yes | No | No | ≥ 16 MB (memory-limited?) | |
Mozilla Firefox 7[2] | Yes | No | 7 beta 12 Sep 2011 |
8 (10) | MPL, GPL, LGPL | C++, Necko | JavaScript, HTML5 | No | Yes | No | Yes | No | No, No | No | Yes | No | No | < 16 MB | |
Mozilla Firefox 11[2] | Yes | No | 11.0 13 Mar 2012 |
13 (17/RFC 6455) | MPL, GPL, LGPL | C++, Necko | JavaScript, HTML5 | No | Yes | Yes | Yes | No | No, No | No | Yes | No | No | < 2 GB (memory-limited?) | |
Achex WS[3] | Yes | Yes | 2.17 17 June 2014 |
RFC 6455 | Commercial | C++ | C++, JavaScript | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | 2^16 | |
Kaazing WebSocket Gateway[4] | Yes | Yes | 5.0 Dec 2014 | RFC 6455 | APL2 (Community Edition), commercial (Enterprise Edition) | Java, JMS | 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 | |
Lightstreamer[5] | Yes | Yes | 7.4.4 9 Jul 2024 |
RFC 6455 | Commercial, freeware | Java | JavaScript, Android, Java, Swift, iOS, macOS, tvOS, watchOS, visionOS, .NET Standard, Python, Flash/Flex, Silverlight, J2ME | Yes | Yes | No | Yes | No | No | Yes | Yes | Yes | No | Data driven, configurable | |
MigratoryData[6] | Yes | Yes | 6.0.5 29 Aug 2021 |
RFC 6455 | 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 | |
Mongoose[7] | Yes | Yes | 7.9 24 Jan 2023 |
RFC 6455 | GPL, commercial | C/C++ | C/C++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | 263, configurable | |
noPoll[8] | Yes | Yes | 0.3.2 28 aug 2015 |
RFC 6455 | LGPL 2.1 | ANSI C | ANSI C | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | memory-limited, configurable | |
POCO C++ Libraries[9] | Yes | Yes | 1.4.6 23 Sep 2014 |
RFC 6455 | Boost | C++, POCO C++ Libraries | C++ | Yes | Yes | Yes | No | Yes | Yes | No | No | No | Yes | memory-limited, configurable | |
PowerWebSockets[10] | Yes | Yes | 15.176.5188 26 Jun 2015 |
RFC 6455 | Test report[11] | 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 |
QtWebSockets[12] | Yes | Yes | 1.0 12 Nov 2013 |
RFC 6455 | LGPL | C++, Qt | Qt | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | memory-limited, configurable | |
RingSocket[13] | No | Yes | 1.0 13 Sep 2019 |
RFC 6455 | MIT | C | C | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | No | unlimited/configurable | |
Resin[14] | No | Yes | 4.026 29 Feb 2012 |
RFC 6455 | GPL, commercial | Java, C | Java | Yes | Yes | Yes | No | Yes | No | Yes | No | No | memory-limited, configurable | ||
WebSocketListener[15] | No | Yes | 2.1.3 24 Nov 2014 |
RFC 6455 | MIT | .NET, Mono | .NET, Mono | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | No | Configurable | |
Wt[16] | 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 | |
XSockets.NET[17] | Yes | Yes | 5.* | RFC 6455 | 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 | |
RIWA Gateway[18] | Yes | Yes | 2.01 | RFC 6455 | Commercial | Java | Java, Android, iOS, JavaScript | Yes | Yes | Yes | Yes | No | Yes | No | Yes | No | No | memory-limited, configurable | |
μWebSockets[19] | No | Yes | v0.14.0 28 Mar 2017 |
RFC 6455 | Test report[20] | 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 |
Boost.Beast[21] | Yes | Yes | 94 30 July 2017 |
RFC 6455 | Test report[22] | Boost | C++, Boost Asio | C++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | unlimited (packets streamed to user code), permessage-deflate also unlimited (chunked) |
libwebsockets[23] | Yes | Yes | 2.4 16 Oct 2017 |
RFC 6455 + RFC 7692 | Test report[24] | LGPL2 + SLE | C, libuv, libev , 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) |
websocket++[25] | Yes | Yes | 0.8.2 20 Apr, 2020 |
RFC 6455 | BSD | C++11 | C++11 | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | |
facil.io[26] | Yes | Yes | 0.7.1 18 May 2019 |
RFC 6455 | MIT | C | C | Yes | Yes | Yes | Yes | Yes | Yes, yes | Yes | Yes | Yes | Yes | configurable client to server limits. unlimited (chunked) server to client. | |
oatpp-websocket[27] | Yes | Yes | 1.3.0 19 Nov 2021 |
RFC 6455 | Apache License 2.0 | C++11, Oat++ | C++11, Oat++ | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | unlimited (packets streamed to user code) |
Notes
[edit]- ^ a b Chromium website
- ^ a b Necko website
- ^ Achex WS website
- ^ Kaazing website
- ^ Lightstreamer website
- ^ MigratoryData website
- ^ Mongoose Library website
- ^ noPoll website
- ^ POCO C++ Libraries documentation
- ^ PowerWebSockets website
- ^ PowerWebSockets Autobahn|Testsuite report
- ^ QtWebSockets website
- ^ RingSocket (GitHub)
- ^ Caucho website
- ^ WebSocketListener website
- ^ wt website
- ^ XSockets.NET website
- ^ RIWA website
- ^ μWebSockets (GitHub)
- ^ μWebSockets Autobahn|Testsuite report
- ^ Boost.Beast (GitHub)
- ^ Beast.WebSocket Autobahn|Testsuite report
- ^ libwebsockets.org website
- ^ libwebsockets.org lws Autobahn|Testsuite report
- ^ websocket++ website
- ^ facil.io website
- ^ oatpp.io website