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

我知道最好的方法是使用XMPP,但我没有使用它的经验.我希望使用PHP实现这一点.

我已经下载了XMPPHP,我编辑了一个示例,在GMail中向我的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服务器,这会增加系统的复杂性.

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

> Adob​​e Flash Socket
> ActiveX HTML文件(IE)
>服务器发送事件(Opera)
> XHR与多部分编码
> XHR与长轮询

这些旧方法和WebSockets由名为Juggernaut的库提供支持.

更新Juggernaut has been deprecated by the maintainer,理由充分:现代浏览器通过称为服务器发送事件(SSE)的规范支持开箱即用的持久连接(当然除了IE).向后兼容性现在由polyfills(What is a polyfill?)处理,并且如弃用文章所述,有几个很好的将SSE带到旧版浏览器.

如何使用PHP和JQuery开发基于Web的XMPP聊天工具?的更多相关文章

  1. ios – XMPP应用终止而不是回复消息

    我在XMPP应用程序中工作.当我终止并杀死我的应用程序时,1)XMPP服务器中未连接用户.用户离线.但我希望用户连接和在线.喜欢WhatsApp(应用).2)我当时无法从XMPP服务器端获取任何消息,这种方法不是调用.那么,我如何获得消息?

  2. XMPP iOS框架检测与OpenFire服务器的互联网断开连接问题

    我已经使用XMPPiOS框架与OpenFire服务器实现聊天应用程序.幸运的是,应用程序正在运行,但我在应用程序中面临一个互联网断开的问题.当用户正在注销或手动进入离线模式时,它会将节发给他/她的名单.所以他/她的名单知道用户进入离线模式.现在当互联网从用户设备断开连接时,由于互联网断开,应用程序无法向服务器发送存在节.所以他/她的名单将不会获得关于该离线用户的信息,用户将只显示在线模式.我认为像

  3. ios – 为什么Web Inspector向我显示“无检查应用程序”?

    什么可能是一个可能的原因,什么可以解决?解决方法我有同样的问题,这是因为我正在运行iOS8,通过将Safari更新到7.1来修复.

  4. Swift Web 开发之 Vapor - 入门一

    简介Vapor是一个基于纯Swift构建出的Web开发框架,目前可以运行在macOS和Ubuntu,用于构建出漂亮易用的网站或者API服务。组件VaporAuthSessionsCookiesRoutingVaporToolBoxFluentEngineHTTPURIWebSocketsSMTPLeafJSONConsoleTLSCryptoNodeSocksVapor使用SwiftPackageManager做依赖和包管理,不过以我个人目前的使用感受来看SwiftPackageManager还不是很好用

  5. Swift Web 开发之 Vapor - 模版 Leaf三

    Leaf作为Vapor官方提供的组件之一原生集成在Vapor中,Leaf模版文件以.leaf结尾,模版语法夹杂在HTML之间,我们可以直接使用而不需要引入其他外部依赖。#import()用来声明一个插入点在当前模版。这是[SwiftWeb开发之Vapor]系列的第三篇,说了说Vapor中自带的Leaf模版引擎,按照笔者目前的使用情况来看其实Leaf还不太成熟,虽然还有太多需要优化改进的地方,不过我相信之后一定会越来越好的。所以不要害怕,赶紧来写SwiftServerSide吧!

  6. 在android中创建聊天应用程序的最佳做法是什么

    我打算创建一个Android聊天应用程序.实际上聊天将成为应用程序的一项功能.我想知道有关Android聊天应用程序的最佳实践.我熟悉的两个选项是C2MD,每隔几秒就会对服务器db进行一次自定义轮询.现在,我知道C2MD本来应该是伟大的,但根据我的理解,它并不可靠.我试图实现它,它似乎没有工作.此外,如果由于某种原因谷歌结束时发生了某些事情(就像他们的服务器已关闭–不太可能但可能发生)我无法联系他

  7. Smack(XMPP)聊天应用程序的Android后台服务

    我正在使用asmack库实现一个聊天应用程序.我想启动一个始终运行的服务,其中所有的连接管理任务都要完成,并且应该继续接收传入的数据包并将消息保存在我的sqlite数据库中.当我的应用程序启动时,我希望我的应用程序也会收到通知,而后台服务将消息插入sqlite数据库.如何用粘性服务实现这种结构.是否还需要部分唤醒锁定.因为,有时也会根据特定需求使用http来下载图像.解决方法您可以在服务器上注册后

  8. android – 如何使用Smack了解XMPP openfire中的键入状态

    我正在使用OpenfireXMPP服务器开发聊天应用程序.我可以在两个用户之间进行文字聊天但我想知道某人输入消息时的打字状态.所以我创建了一个类:–但我很困惑,所以它将如何运作?我知道我需要一个数据包,我可以在Listener中使用它.但我无法找到该数据包.请任何人建议,它将如何运作?还有Smack和asmack有什么区别?解决方法要启用ChatStateListener,您需要创建自定义MessageListener类然后创建MessageListener对象然后在createchat方法中传递它Sma

  9. android – 如何添加和订阅jabber条目到我的XMPP帐户?

    >如何获取入站在线通知?>如何发送出站在线通知?

  10. android – Facebook Javascript SDK和Phonegap URL错误

    我目前正在尝试使用android应用程序中的phonegap开发facebook登录功能.我已经完成了所有必要的安装,并为我放在facebook上的应用程序生成了一个哈希键,但是我一直收到以下错误:GivenURLisnotallowedbytheApplicationconfiguration.:OneormoreofthegivenURLsisnotallowedbytheApp’ssetti

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部