Facebook 实时聊天背后的概念(数据传输)是啥?

Posted

技术标签:

【中文标题】Facebook 实时聊天背后的概念(数据传输)是啥?【英文标题】:What is the concept (data-transmision) behind Facebook's live chat?Facebook 实时聊天背后的概念(数据传输)是什么? 【发布时间】:2011-01-04 19:11:06 【问题描述】:

我最近加入了 Facebook(我知道我迟到了),昨晚我惊醒了。它看起来像实时聊天模块 每隔一秒左右“寻找”新的回复信息。这有点太快了IMO。我不知道他们是如何设法不得到他们的 服务器活着。

我想知道背后的概念是什么。或者至少,你们认为他们是如何做到这一点的。

我还没有运行 Firebug 来查看生物发送的 XHR 请求。

我相信,如果实时聊天保存在 Iframe 中,并且 XHR 发送到不同的 HTTP 服务器,它将保持“主要” 服务器“冷却器”。此外,使用 iframe 方法将避免由于“主”使用的 cookie 而发送过多的带宽 网站。

我不想要“他们有数百台服务器每分钟接收数百万个请求,他们可以生存。”这样的答案。 我敢肯定我只是想念他们的一些巫术魔法。 :P

无论如何,有什么想法吗?

【问题讨论】:

仅供参考,上次我听说 Facebook 有 70,000 台服务器。这样一来,他们最终还是会变得迟缓。 【参考方案1】:

信息可在此处获得: http://www.facebook.com/note.php?note_id=14218138919

这些幻灯片几乎解释了一切: http://www.slideshare.net/dariosalvelli/eugene-letuchy-erlangat-facebook

【讨论】:

【参考方案2】:

也许他们正在使用 websocket 或类似的东西来保持与服务器的持久连接,而不是在每次需要发送数据时打开/关闭 HTTP 连接。

【讨论】:

虽然,这个解决方案不是跨浏览器。也许他们将 websockets 用于有能力的浏览器,而将其他东西用于其他浏览器。【参考方案3】:

你可能想用谷歌搜索xmpp

【讨论】:

问题是,如何在浏览器中实现 XMMP? :) Bosh 将 XMPP 流量转换为 HTTP 流量...而 Strophe.js 具有魔力:)【参考方案4】:

我最后一次用萤火虫看它,诚然是好几个月前的事了,好像他们用的是彗星法。有一个 XHR 打开长达一分钟,它要么返回新数据,要么在一分钟结束时什么也没有。

【讨论】:

哦,这很有趣。谢谢你的提示。这很可能是他们迄今为止仍在使用的方法。我会查查的。但现在我想到了另一个问题。这个概念是不是非常“服务器杀手”,保持连接活动一段时间,即使只有一分钟。即使有 70,000 台服务器(谢谢 Dustin),它也需要一个不寻常的连接队列管理 IMO。 我敢打赌,他们的聊天系统与其他一切都是隔离的,并且系统针对它进行了优化。如果每个打开的连接实际上都没有做任何事情,那么您可能会得到很少的开销。但我对此一无所知。

以上是关于Facebook 实时聊天背后的概念(数据传输)是啥?的主要内容,如果未能解决你的问题,请参考以下文章

浅尝Facebook发送消息背后的用户体验行为

浅尝Facebook发送消息背后的用户体验行为

聊天网站背后的想法

女朋友问阿里双十一实时大屏如何实现,我惊呆一会,马上手把手教她背后的大数据技术

使用 xmpp 的实时通知

使用 Facebook 身份验证创建聊天室