我正在考虑使用Rails实现国际象棋(需要websockets),并在生产部署中使用Nginx作为一堆Unicorn进程的反向代理.
在考虑如何完成这项工作时,我得到了以下问题:
据我所知,websockets是一个持久的连接.因为一切都通过反向代理Nginx,Unicorn工作进程究竟会如何维护到客户端浏览器的websocket连接? Nginx会维护每个浏览器websocket连接到哪个Unicorn进程的状态并充当一种中介吗?在Unicorn进程中保持持久的websocket连接会阻止整个工作进程吗?
是否有推荐的方法使用Rails实现国际象棋(使用websockets)?
连接Unicorn的同步处理和使用nginx的异步传递意味着nginx方面的一些逻辑对我来说似乎至少很尴尬.最多 – 不可能.
有一个关于Private Pub gem的Railscast使用Thin webserver.它更适合这项任务:它是异步的,它能够处理许多基于事件的IO的并发请求.所以我建议你用Thin替换Unicorn或者并排安装Thin.
Puma网络服务器也可能是一个选项,但是,我无法提供更多信息.