1

我在 Facebook 上有一个 Canvas 应用程序,它只显示托管在我们外部网站上的页面。工作得很好。

我在 Firefox 中注意到的是在 Firebug 中报告了持续加载和错误:

获取http://0-68.channel.facebook.com/pull?channel=p_...1&partition=1&clientid=3744ab1f&cb=b3di&idle=287

200 中止

39.86s

这种加载尝试总是需要大约 40 秒,并在失败后立即重试。我也尝试过自行加载上述 URL,但这只是超时并显示“连接重置”消息。

这与我在 SDK 设置中的 channelUrl 指令有关吗?我的设置如下:

var channel_url         = "http://mysite.com/facebook/channel/"; // Aside from the domain, this is the actual final url.
var app_id              = "blahblahblah";


// Initialize the facebook object
FB.init({
    appId: app_id, // From the globals set up at the top of this page
    channelUrl : channel_url, 
    cookie: true,
    xfbml: true,
    oauth: true
});

频道文件中只有这个:

<script src="//connect.facebook.net/en_US/all.js"></script>

但我也尝试过异步加载js。

如果我在浏览器中加载http://mysite.com/facebook/channel/,一切都很好。

有什么想法吗?

4

2 回答 2

1

Facebook 的 JS SDK 对事件更新进行长轮询。如果没有可用的更新,则连接最终会超时,您将在 Firebug 中看到它已中止。

于 2012-06-18T09:18:26.360 回答
-1

*从另一个位置复制和粘贴

这些请求是 HTTP 长轮询请求。我只打开了 Facebook 网站几分钟,我并没有真正监控活动,但它看起来像:

  • Facebook 正在使用 HTTP 长轮询,其中打开的连接被标记为“待处理”
  • HTTP Long-Poll 请求保持打开状态 40 秒,然后如果没有活动,则请求关闭并打开一个新请求。
  • 如果在 40 秒内发送了响应(服务器到客户端),则连接关闭(嗯,这就是 HTTP 长轮询的工作方式)
于 2014-06-03T05:07:01.617 回答