aboutsummaryrefslogtreecommitdiffstats
path: root/guide/ws_handlers.md
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-01-17 23:58:55 +0100
committerLoïc Hoguin <[email protected]>2013-01-17 23:58:55 +0100
commit1f1969ba7123c2dc4af8b0391104d3147dfe3c3a (patch)
treec02ac7187e9a61d9a1c01fb18a190f6c8461d08f /guide/ws_handlers.md
parent1b996794eedbfee87997cde8d05d8fae9548094a (diff)
downloadcowboy-1f1969ba7123c2dc4af8b0391104d3147dfe3c3a.tar.gz
cowboy-1f1969ba7123c2dc4af8b0391104d3147dfe3c3a.tar.bz2
cowboy-1f1969ba7123c2dc4af8b0391104d3147dfe3c3a.zip
Get the basics of Websocket covered in the guide
Diffstat (limited to 'guide/ws_handlers.md')
-rw-r--r--guide/ws_handlers.md25
1 files changed, 19 insertions, 6 deletions
diff --git a/guide/ws_handlers.md b/guide/ws_handlers.md
index 226ada0..c1e551e 100644
--- a/guide/ws_handlers.md
+++ b/guide/ws_handlers.md
@@ -16,15 +16,28 @@ is implemented by most browsers today, although for backward
compatibility reasons a solution like [Bullet](https://github.com/extend/bullet)
might be preferred.
-Callbacks
----------
-
-@todo Describe the callbacks.
-
Usage
-----
-@todo Explain how to use them.
+Websocket handlers are a bridge between the client and your system.
+They can receive data from the client, through `websocket_handle/3`,
+or from the system, through `websocket_info/3`. It is up to the
+handler to decide to process this data, and optionally send a reply
+to the client.
+
+The first thing to do to be able to handle websockets is to tell
+Cowboy that it should upgrade the connection to use the Websocket
+protocol, as follow.
+
+``` erlang
+init({tcp, http}, Req, Opts) ->
+ {upgrade, protocol, cowboy_websocket}.
+```
+
+Cowboy will then switch the protocol and call `websocket_init`,
+followed by zero or more calls to `websocket_data` and
+`websocket_info`. Then, when the connection is shutting down,
+`websocket_terminate` will be called.
The following handler sends a message every second. It also echoes
back what it receives.