我期待建立一个网站,该网站设有网站访问者和网站管理员之间的聊天工具。
我知道这样做会使用XMPP的最佳方式,但我一直在使用它没有经验。 我期待实施这一使用PHP。
我已经下载XMPPHP和我编辑的例子在Gmail中发送邮件到我的谷歌聊天客户端,但是当我回复谷歌告诉我,另一端没有得到消息。
到目前为止,最翔实的教程是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插槽
- 的ActiveX HTMLFILE(IE)
- 服务器发送的事件(歌剧)
- XHR与多编码
- XHR长轮询
这些旧的方法,和WebSockets的,是由一个叫库支持剑圣 。
UPDATE 剑圣已经被弃用的维护者 ,有很好的理由:现代浏览器都支持通过规范称为服务器发送的事件(SSE)的开箱(当然,IE除外)的持久连接。 向后兼容现在由polyfills处理( 什么是填充工具? )和弃用后指出,有几个好的,以使SSE到传统浏览器。
有资源的负载在那里,它可以帮助您与此有关。 快速谷歌搜索带来了以下情况:
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协议。 做到这一点的方法之一是轮询。 发送用于为用户到服务器新的未决消息的请求。 服务器应该能已发送的消息和尚待所交付的区分。 这种方法被称为轮询。 您的浏览器不断要求该服务器发送任何未决的消息。 但是,这可能会浪费带宽,也耗尽电池(如果该网站是使用智能手机访问)。 更好的选择是仍然使用XMPP服务器。