0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 20:30:23 +00:00
Commit graph

150 commits

Author SHA1 Message Date
Loïc Hoguin
3977f2b96f
Document the commands based Websocket interface
The old interface with ok|reply|stop tuples is deprecated.
2019-10-06 16:51:27 +02:00
Loïc Hoguin
99df823cc3
Document stopping the listener in App:stop/1 2019-10-03 10:09:35 +02:00
Loïc Hoguin
d5814a59f4
rest_pastebin example: Add a constraint for lang parameter 2019-09-05 18:05:44 +02:00
ruanpienaar
094387a08f
file_server example: Fix ../ links
Amended to fix an issue with repeated path segments.
2019-09-05 17:40:37 +02:00
Loïc Hoguin
d4dff21055
Accept a broader media type as input in rest_pastebin example 2018-11-01 14:44:55 +01:00
Herman Singh
86cb105679
Rename handler modules to _h 2018-09-23 14:12:38 +02:00
Loïc Hoguin
6b1db885d1
Use cowboy_req:stream_events in the eventsource example 2018-06-27 13:50:37 +02:00
Loïc Hoguin
58b70a594b
Remove broken links from examples README 2017-08-09 09:47:56 +02:00
Loïc Hoguin
e7a65406a7
Remove the broken examples
Hooks are gone, and we won't be able to stream body in REST
in Cowboy 2.0-rc.1, and might not in 2.0 either. That is,
other than via halting the processing.
2017-07-19 18:42:44 +02:00
Loïc Hoguin
ec00e3d60e
Make cowboy_req:read_part return multipart headers as map 2017-06-09 16:57:11 +02:00
Loïc Hoguin
6f7b59886e
Remove NumAcceptors argument from start_clear/tls
They are now cowboy:start_clear/3 and cowboy:start_tls/3.
The NumAcceptors argument can be specified via the
num_acceptor transport option. Ranch has been updated
to 1.4.0 to that effect.
2017-06-07 15:15:54 +02:00
Loïc Hoguin
91ae70b06c
Change the order of set_resp_cookie arguments
The Opts value is put last, to be more consistent with the
rest of the cowboy_req module.

Additionally a test handler was fixed which reduced the number
of errors in http_SUITE.
2017-02-19 09:46:11 +01:00
Loïc Hoguin
a45813c60f
Allow passing options to sub protocols
Before this commit we had an issue where configuring a
Websocket connection was simply not possible without
doing magic, adding callbacks or extra return values.
The init/2 function only allowed setting hibernate
and timeout options.

After this commit, when switching to a different
type of handler you can either return

  {module, Req, State}

or

  {module, Req, State, Opts}

where Opts is any value (as far as the sub protocol
interface is concerned) and is ultimately checked
by the custom handlers.

A large protocol like Websocket would accept only
a map there, with many different options, while a
small interface like loop handlers would allow
passing hibernate and nothing else.

For Websocket, hibernate must be set from the
websocket_init/1 callback, because init/2 executes
in a separate process.

Sub protocols now have two callbacks: one with the
Opts value, one without.

The loop handler code was largely reworked and
simplified. It does not need to manage a timeout
or read from the socket anymore, it's the job of
the protocol code. A lot of unnecessary stuff was
therefore removed.

Websocket compression must now be enabled from
the handler options instead of per listener. This
means that a project can have two separate Websocket
handlers with different options. Compression is
still disabled by default, and the idle_timeout
value was changed from inifnity to 60000 (60 seconds),
as that's safer and is also a good value for mobile
devices.
2017-02-18 18:26:20 +01:00
Loïc Hoguin
3c198f7d90
Fix and update the compress example to use cowboy_compress_h 2017-01-22 20:17:52 +01:00
Witeman Zheng
b9ad02d305 Fix websocket example 2016-08-22 09:44:42 +02:00
Loïc Hoguin
8fb4648b13 Merge branch 'master' of https://github.com/sergey-ivlev/cowboy 2016-08-11 11:38:58 +02:00
Loïc Hoguin
badc8d596e Fix cookie example again 2016-08-11 11:25:58 +02:00
Loïc Hoguin
e2d5c268aa Fix timer-sent events in the websocket example 2016-08-11 11:06:03 +02:00
Loïc Hoguin
e30d120bd8 Make reply functions return Req 2016-08-10 17:15:02 +02:00
Loïc Hoguin
aa6f2ab5a4 Update the multipart reading interface
Now named read_part/read_part_body, with a verb indicating action.
2016-08-10 15:09:04 +02:00
Loïc Hoguin
ae95e87eb1 Update examples to the new interface 2016-08-10 14:33:43 +02:00
Loïc Hoguin
ae0dd61673 Add tests for responses and request body reading
This is a large commit. The cowboy_req interface has largely
changed, and will change a little more. It's possible that
some examples or tests have not been converted to the new
interface yet. The documentation has not yet been updated.
All of this will be fixed in smaller subsequent commits.

Gotta start somewhere...
2016-08-10 11:49:31 +02:00
sergey-ivlev
35934c6efd fix echo_get example 2016-07-26 12:26:58 +03:00
Loïc Hoguin
57901a7116 Fix upload example 2016-06-16 22:17:14 +02:00
Loïc Hoguin
dfcfe2cb88 Mark broken examples as such in their README 2016-06-16 19:44:38 +02:00
Loïc Hoguin
43ccea87bc Fix rest_pastebin example 2016-06-15 13:27:31 +02:00
Loïc Hoguin
5003bae369 Fix eventsource example 2016-06-14 17:05:41 +02:00
Loïc Hoguin
84fb85e2e4 Fix cookie example 2016-06-14 16:23:51 +02:00
Loïc Hoguin
a55679b231 Fix rest_basic_auth example 2016-06-14 11:30:42 +02:00
Loïc Hoguin
a4fb56018e Fix websocket example 2016-06-13 18:10:33 +02:00
Loïc Hoguin
352cfce663 Fix markdown_middleware example 2016-06-13 17:35:26 +02:00
Loïc Hoguin
6f75598b70 Fix chunked_hello_world example 2016-06-13 16:26:00 +02:00
Loïc Hoguin
88227898ed Merge static_world and web_server examples
The new example is called file_server and it's basically
the same as web_server was. The name is clearer than the
original, all examples being "Web servers".

The new example is also tested and the test suite has
been refactored a little.
2016-06-13 13:26:24 +02:00
Loïc Hoguin
4293a40d9e Fix rest_hello_world example 2016-06-09 16:33:31 +02:00
Loïc Hoguin
5ca49fefa9 Fix small issue in echo_get example 2016-06-09 16:25:00 +02:00
Loïc Hoguin
def0bc530b Add HTTP/2 snippets to all working examples 2016-06-09 11:21:07 +02:00
Loïc Hoguin
4ced1d0994 Fix echo_post example 2016-06-08 23:35:02 +02:00
Loïc Hoguin
98323c2d72 Fix echo_get example 2016-06-08 20:18:09 +02:00
Loïc Hoguin
25912dfc05 Fix ssl_hello_world example; document HTTP/2 output 2016-04-30 14:58:32 +02:00
Loïc Hoguin
ff936ff0ee Fix hello_world example 2016-04-30 14:41:10 +02:00
Loïc Hoguin
b370442a63 Initial commit with connection/streams
Breaking changes with previous commit. This is a very large change,
and I am giving up on making a single commit that fixes everything.
More commits will follow slowly adding back features, introducing
new tests and fixing the documentation.

This change contains most of the work toward unifying the interface
for handling both HTTP/1.1 and HTTP/2. HTTP/1.1 connections are now
no longer 1 process per connection; instead by default 1 process per
request is also created. This has a number of pros and cons.

Because it has cons, we also allow users to use a lower-level API
that acts on "streams" (requests/responses) directly at the connection
process-level. If performance is a concern, one can always write a
stream handler. The performance in this case will be even greater
than with Cowboy 1, although all the special handlers are unavailable.

When switching to Websocket, after the handler returns from init/2,
Cowboy stops the stream and the Websocket protocol takes over the
connection process. Websocket then calls websocket_init/2 for any
additional initialization such as timers, because the process is
different in init/2 and websocket_*/* functions. This however would
allow us to use websocket_init/2 for sending messages on connect,
instead of sending ourselves a message and be subject to races.
Note that websocket_init/2 is optional.

This is all a big change and while most of the tests pass, some
functionality currently doesn't. SPDY is broken and will be removed
soon in favor of HTTP/2. Automatic compression is currently disabled.
The cowboy_req interface probably still have a few functions that
need to be updated. The docs and examples do not refer the current
functionality anymore.

Everything will be fixed over time. Feedback is more than welcome.
Open a ticket!
2016-03-05 20:20:42 +01:00
Loïc Hoguin
ec82e3548b Simplify specifying the Cowboy version in examples 2016-01-14 22:58:22 +01:00
Loïc Hoguin
cf44496005 Remove the .app.src file in all examples 2016-01-14 20:56:31 +01:00
Loïc Hoguin
5dd9d877b1 Convert the example index README to AsciiDoc 2016-01-14 20:09:01 +01:00
Loïc Hoguin
6f8cb8225a Merge branch 'patch-1' of https://github.com/yurrriq/cowboy 2016-01-14 20:01:52 +01:00
Loïc Hoguin
394b4f0bf7 Simplify example instructions and fix broken examples
Also convert to AsciiDoc while we're at it.
2016-01-14 20:00:50 +01:00
Eric Bailey
a56d3a6fe5 Update README.md
Consistently use the imperative mood and add link to LFE examples.
2016-01-06 16:55:28 -06:00
Loïc Hoguin
e923850389 Use the new unique_integer function to generate IDs
In the eventsource example.
2015-07-27 17:30:17 +02:00
David N. Welton
f5c37a789c Add an index.html that is also served statically as the default for / 2015-05-06 11:50:11 +03:00
Loïc Hoguin
410662b295 Fix cookie example 2015-02-16 16:57:59 +01:00