aboutsummaryrefslogtreecommitdiffstats
path: root/guide/protocols.md
diff options
context:
space:
mode:
Diffstat (limited to 'guide/protocols.md')
-rw-r--r--guide/protocols.md79
1 files changed, 79 insertions, 0 deletions
diff --git a/guide/protocols.md b/guide/protocols.md
new file mode 100644
index 0000000..87ab0cf
--- /dev/null
+++ b/guide/protocols.md
@@ -0,0 +1,79 @@
+Supported protocols
+===================
+
+This chapter describes the supported protocols and lists
+the calls that are valid for each of them.
+
+HTTP
+----
+
+HTTP is a text request-response protocol. The client
+initiates requests and then waits for the server responses.
+The server has no means of creating requests or pushing
+data to the client.
+
+SPDY
+----
+
+SPDY is a binary protocol based on HTTP, compatible with
+the HTTP semantics, that reduces the complexity of parsing
+requests and responses, compresses the HTTP headers and
+allows the server to push data directly to the client.
+
+Websocket
+---------
+
+Websocket is a binary protocol established over HTTP that
+allows asynchronous concurrent communication between the
+client and the server. A Websocket server can push data to
+the client at any time.
+
+Websocket over SPDY is not supported by the Gun client at
+this time.
+
+Operations by protocol
+----------------------
+
+This table lists all Gun operations and whether they are
+compatible with the supported protocols.
+
+| Operation | SPDY | HTTP | Websocket |
+| ---------- | ---- | ---- | --------- |
+| delete | yes | yes | no |
+| get | yes | yes | no |
+| head | yes | yes | no |
+| options | yes | yes | no |
+| patch | yes | yes | no |
+| post | yes | yes | no |
+| put | yes | yes | no |
+| request | yes | yes | no |
+| response | yes | no | no |
+| data | yes | yes | no |
+| cancel | yes | yes | no |
+| ws_upgrade | no | yes | no |
+| ws_send | no | no | yes |
+
+While the `cancel` operation is available to HTTP, its effects
+will only be local, as there is no way to tell the server to
+stop sending data. Gun instead just doesn't forward the messages
+for this stream anymore.
+
+Messages by protocol
+--------------------
+
+This table lists all messages that can be received depending
+on the current protocol.
+
+| Message | SPDY | HTTP | Websocket |
+| -------------------------------- | ---- | ---- | --------- |
+| {gun_request, ...} | yes | no | no |
+| {gun_response, ...} | yes | yes | no |
+| {gun_data, ...} | yes | yes | no |
+| {gun_error, _, StreamRef, _} | yes | yes | no |
+| {gun_error, _, _} | yes | yes | yes |
+| {gun_ws_upgrade, _, ok} | no | yes | no |
+| {gun_ws_upgrade, _, error, ...} | no | yes | no |
+| {gun_ws, ...} | no | no | yes |
+
+Do not forget that other messages may still be in the mailbox
+after you upgrade to Websocket.