1

我在 Rails 应用程序中使用 Faye,我遇到了一个非常奇怪的行为,如果 faye 在提供subscribe所有资产之前到达(即,在$(document).ready()调用之后但在浏览器中的微调器运行时),那么 faye 将阻止浏览器处于“加载”模式(例如,微调器永远不会停止)。

相信我正在使用 websockets 而不是长轮询,尽管我不确定如何确定。当启用引用 websocket 的调试消息时,我确实在 faye 的日志中看到:

2012-06-12 20:16:56 [DEBUG] [Faye::RackAdapter] Received via WebSocket[hybi-13]: [{"channel":"/meta/connect","clientId":"7w5vwypdaudnp9o64qwsb13om","connectionType":"websocket","id":"6s"}]

浏览器连接到thin正在运行的独立服务器

require 'faye'
require 'bundler/setup'

Bundler.require(:faye)

bayeux = Faye::RackAdapter.new(:mount => '/faye', :timeout => 25)
bayeux.listen(9292)

我正在使用的命令是

exec bundle exec rackup faye.ru -s thin -E production

我正在运行 faye 0.8

* faye (0.8.2)
* faye-websocket (0.4.5)

这是我在 chrome 中看到的

5 分钟后,我简单地[Esc]和那些出现了,那faye.js是 Faye 提供的脚本,似乎这些文件中的每一个似乎都对应于每个subscribe调用。

有趣的是,在这 5 个文件之后,有 5 个调用块,每分钟开始一次。

在此处输入图像描述

对此的任何帮助将不胜感激!

4

1 回答 1

2

这是一种占位符答案,以防其他人遇到类似情况。

我发现我在两个不同的地方使用了 Faye.Client,因此正在为 faye 服务器设置两个连接,这是 faye 不支持的(因为它不需要)。删除另一个 faye 客户端有所帮助,我有时仍然会看到奇怪的行为,但这确实使事情有所改善。

于 2012-06-15T21:11:34.203 回答