高级聊天网络应用程序

时间:2009-05-09 19:40:49

标签: ajax gmail comet chat xmpp

我希望实现类似于facebook / gmail聊天的东西。我知道他们使用彗星和放大器jabber作为他们的技术。但我对一些事情感到困惑。

  1. 我真的需要jabber吗?我可以改为使用带有from,to,message,sent和recd的简单mysql表吗?使用mysql是否有任何低效率?是否存在性能损失?

  2. 可以使用常规网络服务器实现彗星吗?我需要一些特殊的服务器吗? AFAIK,apache + php无法处理太多的开放连接?我应该使用简单的轮询,这会对我的系统产生负面影响吗?我可以在普通的虚拟主机上使用什么? (因为如果我销售聊天应用程序,它应该适用于大多数人。)

  3. 实施彗星的最佳方法(目前)是什么?无限iframe是个好主意吗?一段时间后不会php超时?它是一个跨浏览器的解决方案还是我必须写一些丑陋的黑客?这会导致服务器负载吗? gmail和facebook用于永久连接的是什么?

3 个答案:

答案 0 :(得分:3)

很棒的问题,希望周末不会丢失。如果你想使用flash kirupa有一个很好的教程如何使用PHP和套接字。就彗星而言,我相信你必须要有某种服务器实现。这就是我现在的微弱知识结束的地方。

简单的轮询示例(jquery + asp.net) http://trappedinhoth.blogspot.com/2009/04/ajax-jquery-chat-demo.html

Kirupa的教程(php5套接字+ flash 8) http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm

开源Flash聊天客户端(谷歌,更多) https://blueimp.net/ajax/

彗星信息 http://cometdaily.com/

我并没有真正回答你的问题,只是指着你更多的资源。我很好奇别人会回答什么。

答案 1 :(得分:2)

  

我真的需要jabber吗?我可以改为   使用一个简单的mysql表来自,   to,message,sent and recd?在那儿   使用mysql的任何效率低下?是   有没有性能损失?

是的,你确实需要使用jabber而不是mysql。您可以阅读Stonebraker等人的[建筑时代的结束(完成重写的时间)] [1],了解为什么使用RDBMS是不合适的。

  

可以使用常规实现彗星   网络服务器?我需要一些吗?   特殊服务器? ......我应该用简单的   民意调查,会有不利影响   影响我的系统?我能用什么   在普通的虚拟主机上开箱即用?   gmail和facebook用于永久连接的是什么?

彗星是一个含糊不清的术语,但不要担心。您不需要特殊服务器,不应使用轮询。您可以使用[BOSH] [2] - 这也是Facebook(我怀疑Gmail)使用的。

在客户端使用[JSJaC] [3](或[my fork on Github] [4])和服务器端的[ejabberd] [5]。两者都支持[BOSH] [6](以及[XMPP over BOSH] [7]),这意味着您可以直接与XMPP服务器建立HTTP连接,避免轮询并处理高流量负载。

所有这些链接都在http://delicious.com/petef/stackoverflow-843889

标记

答案 2 :(得分:1)

我认为Jabber可以安全地概念化为(妈妈)中间件,而MySQL肯定是(持久存储)后端。这就是苹果和橘子。

鉴于由于RDCIS的ACID保证及其扩展特性而遇到的限制,大型web2.0应用程序都不能依赖RDBMS进行实时消息传递。 (考虑动态分区SQL表以添加更多服务器,以便只了解其中一个问题。)

最重要的考虑因素是系统中消息的持久性。它们是永久存在还是仅在给定的时间窗口内存在。鉴于它是一个聊天应用程序,很可能是后者。为什么不使用基于内存的存储而不是RDBMS?

你为什么要用Jabber?嗯,它是一种标准,所以你将在未来打开互操作的可能性,即使这不是一个问题。

更重要的是,这是一个长期以来一直处于严重发展状态的系统(在互联网狗年),所以假设它(截至目前)并且将继续比任何你都更成熟设计,实施,调试和内部生产。

对彗星完全无能为力,所以没有评论!