       @doc ~S"""
       Gracefully handles websocked terminate.
 
-      The `reason`, req` and `options` are ignored.
+      The `reason`, `req` and `state` are ignored.
       """
       @spec websocket_terminate({atom, any}, :cowboy_req.req, any) :: :ok
       def websocket_terminate(_reason, _req, _state) do

      end

      ## Outgoing
      @spec websocket_info(
        message :: any,
        req :: :cowboy_req.req,

    send_response({:reply, type, nil, state}, socket_state, req)
  end

  @doc """
  Sets up a websocket proxy to a given `proxy`.

  The `state` is modified to add in the new proxy, while `req` is returned untouched.
  """
  @spec setup_proxy(proxy :: String.t, state :: map, req :: :cowboy_req.req) ::
    {:reply, {:text, String.t}, :cowboy_req.req, map}
    | {:ok, :cowboy_req.req, map}
