2009-06-20 65 views
1

我打算在我的网站上建立网络聊天。我知道这样做的两种方式:一种是使用XMPP Web客户端(通过flash,长的TCP连接),另一种是Facebook方式,长时间轮询。哪个更好?长时间的TCP连接还是长时间轮询?

但Facebook会更新他们的聊天来支持Jabber(XMPP),所以有人可以告诉哪种方式更好? (包括升级到XMPP)

+0

哪个更短;-) – Kredns 2009-06-20 05:06:52

+0

Facebook聊天正在使用Erlang,因此拥有100 000个连接的权衡并不像其他语言那样困难 – Eric 2009-06-20 05:15:03

回答

2

我已经与我的应用程序长轮询的效果还不错,但更大的问题是你是否要去面对C10K problem。如果是这样的话,构建你的代码来处理这种强烈的工作负载将可能主导所有其他设计考虑,至少在短期内。 :-)

除服务器负载以外,使用哪种策略的首要考虑因素是客户端环境兼容性 - 能够从仅允许HTTP的恶意防火墙或禁止任何插件的浏览器环境中工作轮询是唯一的生存方式,但它比简单的TCP连接方法花费更多。

0

他们有不同的利弊,对于如:TCP需要一个插件(至少要等到HTML5网页插座得到广泛支持的),长轮询是少高性能,等我不是这种差异的专家,这就是为什么我会建议更换你避免这种选择,避免开发和每一个方法涉及调整,避免在现有技术(即作为HTML5的到来)的未来变化,使用使用抽象的运输方法图书馆和根据客户端功能选择最佳方法:

http://socket.io/

这个美妙的库使得创建实时应用程序非常简单!除了Node.js(服务器端JavaScript)的主流实现之外,还有各种服务器端实现:Python(Tornado),Java,Google GO,Rack(Ruby),