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 实时聊天背后的概念(数据传输)是啥?的主要内容,如果未能解决你的问题,请参考以下文章