通过 Faye 在 Rails 应用程序上进行实时聊天,但通过 Apache 在乘客上进行实时聊天

Posted

技术标签:

【中文标题】通过 Faye 在 Rails 应用程序上进行实时聊天,但通过 Apache 在乘客上进行实时聊天【英文标题】:Live chat on Rails app through Faye but on Passenger with Apache 【发布时间】:2014-08-08 15:04:39 【问题描述】:

我们的网站目前正在使用 Apache 在Passenger 上运行我们的Rails Web 应用程序。

最近,需要进行实时聊天。因此,我们计划按照本文 (http://code.tutsplus.com/tutorials/how-to-use-faye-as-a-real-time-push-server-in-rails--net-22600) 部署 Faye。

但是,由于 Apache 不支持 websocket,我们无法使用任何此类实现。

我们不希望更改网络服务器,因为这将涉及额外的测试和迁移工作。有没有其他方法可以解决这个问题?

感谢 Rails 专家提供的任何帮助。

-贾克斯

【问题讨论】:

【参考方案1】:

不知道答案,尽管我在某处读到你应该使用 redis for faye 与 apache/passenger 一起运行它,因为它们不能在单个进程中运行并共享内存,请查看 faye-redis gem。可能 faye 服务器应该作为单独的进程运行,并且 Apache 配置为向其发送 ':9292/faye'。

【讨论】:

这里声明:faye.jcoglan.com/ruby.html。我引用“Faye 支持的一些服务器,例如Passenger,使用多进程模型,而不是在同一进程中使用线程或事件。对于那些服务器,默认的内存引擎将不起作用;您应该使用多进程模型。 - 流程引擎,例如 Redis 后端。”

以上是关于通过 Faye 在 Rails 应用程序上进行实时聊天,但通过 Apache 在乘客上进行实时聊天的主要内容,如果未能解决你的问题,请参考以下文章

将 Nodejs Faye-Client 连接到 Rails Faye 服务器

缺少 Websocket 标头

对选择 Faye 或 Rails 4 Actioncontroller::Live 的困惑

Faye Websocket 错误 Rails 2.2.2(生产)

Websocket rails (Faye-websocket) 握手错误代码 200 - AWS ElasticBeanstalk、nginx、puma

Websockets 与主要应用程序(nginx + 乘客 + faye)