Skip to main content
 首页 » 编程设计

ruby-on-rails-3.1中Faye 在网络中的另一台计算机上使用浏览器时不会发布

2024年09月07日16yxwkf

我的 Rails 应用程序中有 faye 实现。当两个浏览器位于同一台计算机上时,发布方法可以正常工作。当我从另一台计算机上的另一个浏览器访问该应用程序时,它只能从客户端到服务器运行,不会发布到其他客户端。此外,当服务器上的浏览器发生更改时,发布事件不会推送到客户端。
Controller 发布代码:

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 

示例:
答:服务器, B:客户1, C:客户端2

A B 和 C 是同一网络中的不同计算机,并且都订阅了同一 channel 。

  1. 如果我在 B 上输入数据,A 会看到数据,但 C 不会看到数据,直到我刷新页面(即从 db 获取数据)。
  2. 如果我在 A 上输入数据,该数据不会发布到其他客户端。
  3. 如果我在 C 上输入数据到只有 C 和 B 订阅的 channel ,则只有 C 可以看到该数据,并且不会发布到 B。

如果 A、B 和 C 是同一台计算机上的不同浏览器,则上述所有情况都有效。

我已在开发模式下运行此程序,并尝试过 WEBrick、Unicorn 和 Thin。

如有任何帮助,我们将不胜感激。 谢谢。

请您参考如下方法:

为了解决该问题,我将“localhost”的所有实例替换为运行 Faye 的服务器的地址。这也包括为客户订阅 channel 。

希望对你有帮助 干杯!