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

时间:2015-05-15 05:26:38

标签: elixir phoenix-framework

irc上的liveforeverx回答了我原来的问题,我已将此问题修改为后续内容。

菲尼克斯依靠Plug来实现它的许多功能。然而,当谈到启动牛仔服务器时,凤凰为什么不在Phoenix.Endpoint.CowboyHandler.start_link中使用Plug的api启动呢?为什么要调用ranch_listener_sup上的start_link呢?

是不是因为Plug的任何限制,还是因为Phoenix在插头api成熟之前开始这么多?

我的原始问题:

菲尼克斯如何/在哪里开始牛仔?

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

Plug.Adapters.Cowboy.http/3

然而,通过我的凤凰应用程序和凤凰源代码,我没有看到任何调用Plug.Adapters.Cowboy.http/3的实例。菲尼克斯如何/在哪里开始牛仔?

1 个答案:

答案 0 :(得分:9)

有两个原因:

  1. 支持websockets

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