aboutsummaryrefslogtreecommitdiffstats
path: root/guide/ws_protocol.md
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-03-03 16:59:02 +0100
committerLoïc Hoguin <[email protected]>2014-03-03 16:59:02 +0100
commit239e5e0ba7f413642aca3cf2735f0709a643fb8e (patch)
tree2c9f32d7b1137f09f134c5c1300f6a2508a8c694 /guide/ws_protocol.md
parent64f07fe9a345da95a852c720e3c07569ecc6a59d (diff)
downloadcowboy-239e5e0ba7f413642aca3cf2735f0709a643fb8e.tar.gz
cowboy-239e5e0ba7f413642aca3cf2735f0709a643fb8e.tar.bz2
cowboy-239e5e0ba7f413642aca3cf2735f0709a643fb8e.zip
Update and improve Websocket chapters in the guide
Diffstat (limited to 'guide/ws_protocol.md')
-rw-r--r--guide/ws_protocol.md45
1 files changed, 45 insertions, 0 deletions
diff --git a/guide/ws_protocol.md b/guide/ws_protocol.md
new file mode 100644
index 0000000..390751e
--- /dev/null
+++ b/guide/ws_protocol.md
@@ -0,0 +1,45 @@
+The Websocket protocol
+======================
+
+This chapter explains what Websocket is and why it is
+a vital component of soft realtime Web applications.
+
+Description
+-----------
+
+Websocket is an extension to HTTP that emulates plain TCP
+connections between the client, typically a Web browser,
+and the server. It uses the HTTP Upgrade mechanism to
+establish the connection.
+
+Websocket connections are asynchronous, unlike HTTP. This
+means that not only can the client send frames to the server
+at any time, but the server can also send frames to the client
+without the client initiating anything other than the
+Websocket connection itself. This allows the server to push
+data to the client directly.
+
+Websocket is an IETF standard. Cowboy supports the standard
+and all drafts that were previously implemented by browsers,
+excluding the initial flawed draft sometimes known as
+"version 0".
+
+Implementation
+--------------
+
+Cowboy implements Websocket as a protocol upgrade. Once the
+upgrade is performed from the `init/3` callback, Cowboy
+switches to Websocket. Please consult the next chapter for
+more information on initiating and handling Websocket
+connections.
+
+The implementation of Websocket in Cowboy is validated using
+the Autobahn test suite, which is an extensive suite of tests
+covering all aspects of the protocol. Cowboy passes the
+suite with 100% success, including all optional tests.
+
+Cowboy's Websocket implementation also includes the
+x-webkit-deflate-frame compression draft which is being used
+by some browsers to reduce the size of data being transmitted.
+Cowboy will automatically use compression as long as the
+`compress` protocol option is set when starting the listener.