基于XMPP的聊天工具使用PHP和JQuery?

我期待开发一个网站,其中包含网站访问者和网站管理员之间的聊天工具。

我知道最好的方法是使用XMPP,但我没有使用它的经验。 我正在寻找使用PHP来实现这一点。

我已经下载了XMPPHP,并编辑了一个示例向GMail的Google Chat客户端发送消息,但是当我回复Google时告诉我另一端没有收到消息。

到目前为止,最丰富的教程是http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/,但我不明白为什么我需要安装'Openfire',也不想构建网站在我的本地机器上。

有人可以告诉我我需要什么(更重要的是,为什么)设置这个项目,以便我可以开始为它构建代码?


从评论到其他答案来看,我会告诉你为什么,还有一点是什么,但不给你一个解决方案,因为我看到“相关”侧栏中有很多解决方案。 你将不得不选择正确的,并知道“为什么”你将能够做出一个受过教育的决定。

为了让聊天感觉正确,答案必须有一些直接性。 随着时间的推移,用户会注意到一秒钟的滞后时间,并给人一种不合时宜的感觉。 要在浏览器中立即或“实时”响应,需要持久连接,以便在新信息进入时立即显示。

由于HTTP的请求/响应规范,浏览器中的持久连接很困难。 有一些规范正在努力为浏览器带来持久连接,但这些浏览器并不普遍。 将来,持久连接将由WebSockets和SPDY提供,这两者都可以在最新版本的Chrome,Safari和FireFox中使用,而IE则滞后一点。

XMPP是持久连接的另一个选项。 XMPP是用于Jabber聊天客户端的协议。 由于它是一个开源实现,它已被移植到许多其他用途。 存在JavaScript库,允许您将浏览器连接到XMPP套接字并侦听新消息。 我在过去看到的方法是将消息发送到Web服务器,然后让Web服务器向XMPP服务器通知新消息,然后将新消息广播给所有用户。 但是,这需要一个XMPP服务器,这会增加系统的复杂性。

大多数用户并不处于浏览器版本的最前沿,因此您需要能够处理旧版浏览器。 大多数替代方法涉及打开一个长时间连接到服务器,每当新数据到达时都会响应。 以下是在旧版浏览器中模拟持久连接的方法列表:

  • Adobe Flash Socket
  • ActiveX HTMLFile(IE)
  • 服务器发送的事件(Opera)
  • XHR与多部分编码
  • XHR与长轮询
  • 这些较旧的方法和WebSocket由名为Juggernaut的库支持。

    更新 Juggernaut已被维护者弃用,原因很多:现代浏览器通过称为服务器发送事件(SSE)的规范支持开箱即用的持久连接(当然除IE外)。 向后兼容性现在由polyfills处理(什么是polyfill?),并且正如弃用帖子所指出的那样,将SSE带入传统浏览器有两个好处。


    有大量的资源可以帮助你解决这个问题。 快速的Google搜索会显示以下内容:

    http://sixrevisions.com/tools/10-free-website-chat-widgets-to-make-your-site-interactive/

    http://www.phpfreechat.net/

    http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/


    即时消息应用程序应该是实时的。 一个网站使用请求/响应方法的HTTP协议。 一种方法是POLLING。 向该服务器发送用于该用户的新的未决消息的请求。 服务器应该能够区分已发送的消息和尚未发送的消息。 这种方法被称为轮询。 您的浏览器不断要求服务器发送任何待处理的消息。 但是这可能会浪费带宽并消耗电池电量(如果使用智能手机访问网站)。 更好的选择是仍然使用XMPP服务器。

    链接地址: http://www.djcxy.com/p/61291.html

    上一篇: based XMPP chat facility using PHP and JQuery?

    下一篇: Is it worth customizing an XMPP server? (vs. having client workers)