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
{{nowrap|12 Sep 2011}}

|8 (10)

|

|{{partial|Complex}}

|C++, WebKit

|JavaScript, HTML5

|{{no}}

|{{yes}}

|{{yes}}

|{{yes}}

|{{no}}

|{{no}}, No

|{{no}}

|{{yes}}

|{{no}}

|{{no}}

| ≥ 16 MB
(memory-limited?)

{{rh}}| Google Chrome 16

|{{yes}}

|{{no}}

|16.0.912
{{nowrap|13 Dec 2011}}

|13 (17/RFC 6455)

|

|{{partial|Complex}}

|C++, WebKit

|JavaScript, HTML5

|{{no}}

|{{yes}}

|{{yes}}

|{{yes}}

|{{no}}

|{{no}}, No

|{{no}}

|{{yes}}

|{{no}}

|{{no}}

| ≥ 16 MB
(memory-limited?)

{{rh}}| Mozilla Firefox 7[https://developer.mozilla.org/en/Necko Necko website]

|{{yes}}

|{{no}}

|7 beta
{{nowrap|12 Sep 2011}}

|8 (10)

|

|{{free|MPL, GPL, LGPL}}

|C++, [https://wiki.mozilla.org/Modules/Core#Necko Necko]

|JavaScript, HTML5

|{{no}}

|{{yes}}

|{{no}}

|{{yes}}

|{{no}}

|{{no}}, No

|{{no}}

|{{yes}}

|{{no}}

|{{no}}

| < 16 MB

{{rh}}| Mozilla Firefox 11

|{{yes}}

|{{no}}

|11.0
{{nowrap|13 Mar 2012}}

|13 (17/RFC 6455)

|

|{{free|MPL, GPL, LGPL}}

|C++, [https://wiki.mozilla.org/Modules/Core#Necko Necko]

|JavaScript, HTML5

|{{no}}

|{{yes}}

|{{yes}}

|{{yes}}

|{{no}}

|{{no}}, No

|{{no}}

|{{yes}}

|{{no}}

|{{no}}

| < 2 GB
(memory-limited?)

{{rh}}| Achex WS[http://www.achex.ca/ Achex WS website]

|{{yes}}

|{{yes}}

|2.17
{{nowrap|17 June 2014}}

|RFC 6455

|

|{{free|Commercial}}

|C++

|C++, JavaScript

|{{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)}}

|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

{{rh}}| Lightstreamer[https://lightstreamer.com/ Lightstreamer website]

|{{yes}}

|{{yes}}

|7.4.6
{{nowrap|18 Feb 2025}}

|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
{{nowrap|29 Aug 2021}}

|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
{{nowrap|24 Jan 2023}}

|RFC 6455

|

|{{partial|GPL, commercial}}

|C/C++

|C/C++

|{{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
{{nowrap|28 aug 2015}}

|RFC 6455

|

|{{free|LGPL 2.1}}

|ANSI C

|ANSI C

|{{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
{{nowrap|23 Sep 2014}}

|RFC 6455

|

|{{free|Boost}}

|C++, POCO C++ Libraries

|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
{{nowrap|26 Jun 2015}}

|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
{{nowrap|12 Nov 2013}}

|RFC 6455

|

|{{free|LGPL}}

|C++, Qt

|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
{{nowrap|13 Sep 2019}}

|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
{{nowrap|29 Feb 2012}}

|RFC 6455

|

|{{partial|GPL, commercial}}

|Java, C

|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
{{nowrap|24 Nov 2014}}

|RFC 6455

|

|{{free|MIT}}

|.NET, Mono

|.NET, Mono

|{{yes}}

|{{yes}}

|{{yes}}

|{{yes}}

|{{no}}

|{{yes}}

|{{yes}}

|{{yes}}

|{{yes}}

|{{no}}

| Configurable

{{rh}}| Wt[http://www.webtoolkit.eu/ wt website]

|{{no}}

|{{yes}}

|3.2.0
{{nowrap|30 Nov 2011}}

|0,7,8,13 (17)

|[? Report]

|{{partial|GPL, commercial}}

|C++, Boost Asio

|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
{{nowrap|28 Mar 2017}}

|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
{{nowrap|30 July 2017}}

|RFC 6455

|Test report[https://vinniefalco.github.io/BeastAssets/reports/autobahn/index.html Beast.WebSocket Autobahn|Testsuite report]

|{{free|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)

{{rh}}| libwebsockets[https://libwebsockets.org libwebsockets.org website]

|{{yes}}

|{{yes}}

|2.4
{{nowrap|16 Oct 2017}}

|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
{{nowrap|20 Apr, 2020}}

|RFC 6455

|

|{{free|BSD}}

|C++11

|C++11

|?

|?

|?

|?

|?

|?

|?

|?

|?

|?

|?

{{rh}}| facil.io[http://facil.io facil.io website]

|{{yes}}

|{{yes}}

|0.7.1
{{nowrap|18 May 2019}}

|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
{{nowrap|19 Nov 2021}}

|RFC 6455

|

|{{free|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