Comparison of WebSocket implementations
From Wikipedia, the free encyclopedia
|
|
This article has multiple issues. Please help improve it or discuss these issues on the talk page.
|
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 | Text message support | Binary message support | Message-based API | Frame-based API | Streaming API input/output | Flow-control framework | Automatic pongs for pings | Automatic heartbeat pings | Manual pings/pongs | Frame size limit | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Lightstreamer[1] | Yes | Yes | 5.1.1 05 Mar 2013 |
RFC 6455 | [? Report] | Both Commercial and Freeware | Java | JavaScript / .Net / Java / Flash/Flex / iOS / Android / Silverlight / Windows Phone / WinRT | Yes | No | Yes | No | No/No | Yes | Yes | Yes | No | data-driven, configurable |
| Google Chrome 15[2] | Yes | No | 15.0.874.8 12 Sep 2011 |
8 (10) | complex | C++ / WebKit | JavaScript / HTML5 | Yes | No | Yes | No | No/No | No | Yes | No | No | ≥ 16 MB (memory-limited?) |
|
| Google Chrome 16[2] | Yes | No | 16.0.912 13 Dec 2011 |
13 (17/RFC 6455) | complex | C++ / WebKit | JavaScript / HTML5 | Yes | No | Yes | No | No/No | No | Yes | No | No | ≥ 16 MB (memory-limited?) |
|
| Mozilla Firefox 7[3] | Yes | No | 7 beta 12 Sep 2011 |
8 (10) | MPL & GPL & LGPL | C++ / Necko | JavaScript / HTML5 | Yes | No | Yes | No | No/No | No | Yes | No | No | < 16 MB | |
| Mozilla Firefox 11[3] | Yes | No | 11.0 13 Mar 2012 |
13 (17/RFC 6455) | MPL & GPL & LGPL | C++ / Necko | JavaScript / HTML5 | Yes | Yes | Yes | No | No/No | No | Yes | No | No | < 2 GB (memory-limited?) |
|
| Jetty[4] | Yes | Yes | 7.5.1 9 Sep 2011 |
0-13,RFC 6455[5] | JUnit | Apache 2 & EPL | Java / J2SE & Android | Java / javax.servlet | Yes | Yes | Yes | Yes | No/No[6] | Yes[7] | Yes | No | Yes | 232 tx 263 rx |
| Resin[8] | No | Yes | 4.026 29 Feb 2012 |
RFC 6455 | GPL | Java / C | Java | Yes | Yes | Yes | No | Yes | No | Yes | No | No | memory-limited, configurable | |
| Wt (web toolkit)[9] | 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 |
| Tornado[10] | No | Yes | 2.3 | 7, 8, 13 (RFC 6455) | Apache 2 | Python | Python | Yes | Yes | Yes | Yes [11] | No | No | Yes | No | Yes[12] | 263 |
Notes [edit]
- ^ Lightstreamer Homepage
- ^ a b Chromium Homepage
- ^ a b Necko Homepage
- ^ Jetty Homepage
- ^ Server accepts 0-13 & RFC 6455, client sends only RFC 6455.
- ^ Frames larger that the buffer are fragmented and passed to the message layer as a stream of smaller frames.
- ^ Internal queuing is avoided so that natural TCP/IP backpressure is used for flow control. A slow application consuming messages will eventually block a busy sender.
- ^ Caucho Homepage
- ^ Homepage
- ^ Tornado Homepage
- ^ hidden in private methods, but still accessible
- ^ requires the use of the frame API