7

我正在考虑使用 Rails 实现国际象棋(需要 websockets),并在生产部署中使用 Nginx 作为一组 Unicorn 进程的反向代理。

在思考如何完成这项工作时,我提出了以下问题:

据我了解,websockets 是一个持久连接。由于一切都通过反向代理 Nginx,Unicorn 工作进程究竟如何维护与客户端浏览器的 websocket 连接?Nginx 是否会维护每个浏览器 websocket 连接到哪个 Unicorn 进程的状态并充当一种中介?在 Unicorn 进程中保持持久的 websocket 连接会阻塞整个工作进程吗?

有没有推荐的方法来使用 Rails 实现国际象棋(使用 websockets)?

4

2 回答 2

1

将 Unicorn 的同步处理与使用 Nginx 的异步传递连接起来意味着 Nginx 方面的一些逻辑,这至少对我来说似乎很尴尬。最多 - 不可能。

有一个关于 Private Pub gem 的 Railscast 使用了 Thin webserver。它更适合这个任务:它是异步的,它能够使用基于事件的 IO 处理许多并发请求。所以我建议你用 Thin 替换 Unicorn 或并排安装 Thin。

Puma 网络服务器也可能是一种选择,但是,我无法提供更多信息。

于 2014-07-03T08:12:42.590 回答
-4

nginx 不会做 websockets。你确定你不能用 AJAX 做到这一点吗?如果你真的需要推送功能,你可以尝试围绕 Comet 方法构建的东西:http://en.wikipedia.org/wiki/Comet_(programming)

Faye 是在 Rails 中实现彗星的一个很好的宝石:http: //faye.jcoglan.com/

于 2013-08-06T18:57:16.270 回答