Nginx的WebSocket模块。
如何运行?
Nginx使用多进程模型。工作中的进程不知道其他的进程。当有http请求时,请求会被一个运行中的进程处理。这种模式简单而有效率。它适用于Nginx作为代理服务器的情况。
然而,如果你希望将Nginx作为一个WebSocket服务器,我们将面临一个棘手的问题。假设有两个运行中的进程A和B。当一个WebSocket客户端到来时,它将被A或B处理。假设它被A处理。然后Nginx会发送一些id信息到客户端。如果想要发送东西给客户端,我们也需要一个请求。然而,我们的推送请求可能由另一个进程B处理,进程B不知道客户端,所以失败了。
为了解决这个问题,我们让每个进程在开始运行之前侦听一个唯一的端口。然而,在最新的nginx代码库中,很难添加侦听端口。所以我们使一些nginx内部api公开来简化这个过程。我们将尝试将此补丁合并到nginx代码库中。
todo
ipv6
moredebuglog
pushbinarydata
processupstreammessage
评论