为什么 Phoenix 不使用 Plug 启动服务器?

Why Phoenix doesn't use Plug to start the server?

irc 上的 liveforeverx 已经回答了我原来的问题,我已经修改了这个问题作为后续问题。

Phoenix 的许多功能都依赖于 Plug。但是,在启动cowboy server的时候,Phoenix为什么不用Plug的api in Phoenix.Endpoint.CowboyHandler.start_link来启动呢?为什么调用 ranch_listener_sup 上的 start_link?

是Plug的局限性还是Phoenix在Plug的api成熟之前就开始了?

我原来的问题:

How/where凤凰开始牛仔了吗?

阅读插件文档,我看到要启动服务器,必须调用

Plug.Adapters.Cowboy.http/3

但是,通过 grep 浏览我的 phoenix 应用程序和 phoenix 源代码,我没有看到任何调用 Plug.Adapters.Cowboy.http/3 的实例。 How/where凤凰开始牛仔了吗?

两个原因:

  1. 支持websockets

  2. 因为 Phoenix 在您的应用程序监督树中启动服务器而不是 运行 您在 Cowboy 中的应用程序