我打算在我的网站上建立一个网络聊天。我知道这样做的两种方式:一种是使用XMPP Web客户端(通过flash,长TCP连接),另一种是facebook方式,长轮询。
但是 facebook 将更新他们的聊天以支持 Jabber (XMPP),那么有人能告诉我们哪种方式更好吗?(包括升级到 XMPP)
在我的应用程序中通过长轮询获得了相当不错的结果,但更大的问题是您是否会面临C10K 问题。如果是这样,至少在短期内,构建您的代码以处理这种繁重的工作负载可能会主导所有其他设计考虑因素。:-)
除了服务器负载,使用哪种策略的主要考虑因素是客户端环境兼容性——为了能够在只允许 HTTP 的严苛防火墙后面工作,或者在禁止任何插件的浏览器环境中工作,长轮询是唯一的生存方式,但它比简单的 TCP 连接方法开销更大。
它们有不同的优点和缺点,例如:TCP 需要一个插件(至少在 HTML5 网络套接字得到广泛支持之前),Long Polling 性能较差等。我不是这种差异的专家,这就是我推荐的原因您要避免做出这种选择,避免每种方法涉及的开发和调整,避免未来可用技术的变化(即随着 HTML5 的到来),使用抽象所用传输方法的库,并根据客户端功能选择最佳方法:
这个奇妙的库使创建实时应用程序变得非常简单!并且有各种服务器端实现:Python (Tornado)、Java、Google GO、Rack (Ruby),除了 Node.js 中的主流实现(服务器端 JavaScript)