Comparison of WebSocket implementations
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.6 18 Feb 2025
|
RFC 6455
|
|
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
|
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 [Wikidata], 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
|