使用带有Nginx和Unicorn的Websockets的Rails



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

在思考如何使其发挥作用时,我提出了以下问题:

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

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

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

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

彪马网络服务器也可能是一个选择,然而,我不能提供更多的信息。

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

Faye是在rails中实现comet的一颗非常好的宝石:http://faye.jcoglan.com/

相关内容

  • 没有找到相关文章

最新更新