Combo.Endpoint.Cowboy2Adapter (combo v0.8.0)

View Source

The Cowboy2 adapter for Combo.Endpoint.

To use this adapter, plug_cowboy should be installed as a dependency:

{:plug_cowboy, "~> 2.7"}

Once plug_cowboy is installed, set the :adapter option to your endpoint configuration. For example:

config :demo, Demo.Web.Endpoint,
  adapter: Combo.Endpoint.Cowboy2Adapter

Endpoint configuration

This adapter uses the following endpoint configuration:

  • :http - the configuration for the HTTP server. It accepts all options as defined by Plug.Cowboy. Defaults to false.

  • :https - the configuration for the HTTPS server. It accepts all options as defined by Plug.Cowboy. Defaults to false.

  • :drainer - a drainer process that triggers when your application is shutting down to wait for any on-going request to finish. It accepts all options as defined by Plug.Cowboy.Drainer. Defaults to [], which will start a drainer process for each configured endpoint, but can be disabled by setting it to false.

Custom dispatch options

You can provide custom dispatch options in order to use Cowboy with with custom handlers. For example, to handle raw WebSockets as shown in Cowboy's docs).

The options are passed to both :http and :https keys in the endpoint configuration. However, once you pass your custom dispatch options, you will need to manually wire the endpoint by adding the following rule:

{:_, Plug.Cowboy.Handler, {Demo.Web.Endpoint, []}}

For example:

config :demo, Demo.Web.Endpoint,
  http: [dispatch: [
          {:_, [
              {"/foo", Demo.Web.CustomHandler, []},
              {:_, Plug.Cowboy.Handler, {Demo.Web.Endpoint, []}}
            ]}]]

It is also important to specify your handlers first, otherwise Combo will intercept the requests before they get to your handler.