![30fd25ae1d2aecf1b223fb8c91ba750f.png](https://img-blog.csdnimg.cn/img_convert/30fd25ae1d2aecf1b223fb8c91ba750f.png)
cowboy
本文讨论只cowboy版本2.0以上。
cowboy本身是支持websocket的。其路由配置(cowboy称之为dispatch)中每个路由对应一个handler。
handler指一个回调模块,要求init(req, state)。
对于HTTP请求,init/2应该向req发送请求并返回{:ok, new_req, new_state}。
对于websocket请求(建立websocket的HTTP请求),init/2应该返回{:cowboy_websocket, new_req, new_state}指示handler本身也是一个websocket回调模块,实现了websocket_init/1(可选)、websocket_handle/2、websocket_info/2和terminate/3(可选)。
plug
plug自身有一套路由配置,所有路由共同组成一个Plug。
为了使用plug自身的路由配置,plug_cowboy并没有使用cowboy的路由配置,而是直接配置一个通配路由,handler为Plug.Cowboy.Handler,<