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.1.1
27 May 2020
RFC 6455 Commercial, freeware Java JavaScript, Flash/Flex, Silverlight, iOS, macOS, tvOS, watchOS, Java, J2ME, Android, .NET Standard Yes Yes No Yes No No Yes Yes Yes No Data driven, configurable
MigratoryData[6] Yes Yes 5.0.28
23 Aug 2019
RFC 6455 Commercial Java JavaScript, iOS, Android, Java, C++, .NET, PHP, Node.js, Python, Ruby Yes Yes No Yes No No, No Yes Yes Yes No 263, configurable
noPoll[7] 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[8] 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[9] Yes Yes 15.176.5188
26 Jun 2015
RFC 6455 Test report[10] 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
Push Technology Diffusion[11] Yes Yes 4.6.1 RFC 6455 Commercial Java JavaScript, Flash/Flex, Silverlight, Objective-C & iOS, Java, Java & Android, .NET, Java J2ME & BlackBerry, C/C++, Node.js Yes Yes Yes Yes No Yes Yes Yes[12] Yes[12] No memory-limited, configurable
QtWebSockets[13] 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[14] 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[15] 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[16] 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[17] 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[18] 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[19] 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[20] No Yes v0.14.0
28 Mar 2017
RFC 6455 Test report[21] 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[22] Yes Yes 94
30 July 2017
RFC 6455 Test report[23] 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[24] Yes Yes 2.4
16 Oct 2017
RFC 6455 + RFC 7692 Test report[25] 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++[26] Yes Yes 0.7.0
22 Feb, 2016
RFC 6455 BSD C++11 C++11 ? ? ? ? ? ? ? ? ? ? ?
facil.io[27] 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[28] Yes Yes 1.1.0
25 May 2020
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

gollark: Okay, ignoring...
gollark: ++exec ```print("Potato OS")```
gollark: Ah, there we go.
gollark: It, er, should have said that?
gollark: ++exec ```print("You are a potato.")```
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.