我在我的 Rails 应用程序中有 faye 实现。当两个浏览器在同一台计算机上时,发布方法可以正常工作。当我从另一台计算机上的另一个浏览器访问该应用程序时,它只能在客户端到服务器之间工作,而不会发布到其他客户端。此外,当服务器上的浏览器发生更改时,发布事件也不会推送到客户端。
控制器发布代码:
def publish(channel, data)
message = {
:channel => channel,
:data => data,
:ext => {:faye_token => FAYE_OUTGOING_AUTH_TOKEN}
}
uri = URI.parse('http://localhost:9292/faye')
Net::HTTP.post_form(uri, :message => message.to_json)
end
运行 faye 的命令:
rackup faye.ru -s thin -E production -d
示例:
A:服务器,B:客户端 1,C:客户端 2
AB 和 C 是同一网络中的不同计算机,并且都订阅了同一频道。
- 如果我在 B 上输入数据,A 会看到数据,但 C 在刷新页面之前不会看到数据(这是从 db 获取数据)。
- 如果我在 A 上输入数据,它不会发布给其他客户端。
- 如果我在 C 上输入数据到只有 C 和 B 订阅的频道,只有 C 可以看到数据,并且不会发布到 B。
如果 A、B 和 C 是同一台计算机上的不同浏览器,则上述所有情况都可以工作。
我已经在开发模式下运行了它,并尝试过 WEBrick、Unicorn 和 Thin。
任何帮助,将不胜感激。谢谢。