PHP 和 XMPP 双向

Posted

技术标签:

【中文标题】PHP 和 XMPP 双向【英文标题】:PHP and XMPP both way 【发布时间】:2011-01-07 20:38:34 【问题描述】:

我正在尝试使用 php 和 XMPP 创建一个 Web 应用程序。其中一项要求是,当浏览器上的 javascript 客户端通过 XMPP 向服务器发送事件时,PHP 开始工作并为该请求提供服务。如您所知,XMPP 允许其客户“监听”各种类型的事件,并在他们找到正确的事件时跳起来。当然,PHP 仅在 HTTP 请求期间有效,因此根据我的研究,PHP XMPP 客户端只是“一种方式”——即它们只能生成事件而不能侦听和使用它们。

我对专家的问题是: 1. 我的研究正确吗? PHP/XMPP 是否只有一种方式? 2. 有没有办法用 PHP 解决这个问题? 3. Ruby on Rails 是否有同样的问题,或者它是否以“双向”方式与 XMPP 一起工作?

非常感谢,感谢您对此的任何帮助!

干杯

【问题讨论】:

【参考方案1】:

听起来您正在尝试将 PHP 用作 XMPP 服务器,这将是有问题的。这在 Rails 中可能是可行的,但并不理想。

可能值得看看众多开源 XMPP 平台之一,例如 ejabberd。

【讨论】:

同意,还有其他的,我用过openfire。 igniterealtime.org/projects/openfire【参考方案2】:

我并没有真正理解您所说的“使用 PHP/XMPP 的一种方式”到底是什么意思。但是,根据我的经验,如果您选择使用 PHP+XMPP 组合,则没有任何限制,您的浏览器客户端使用某种 xmpp javascript 库。

以下是 PHP/XMPP 设置的一般流程:

    浏览器发送 ajax 投票 您的 Web 服务器上的 PHP 脚本接收此 ajax 轮询 内部 PHP 脚本与 bosh 端点对话 PHP 脚本等待来自服务器的响应,直到发生超时 响应或超时 PHP 将响应从 bosh 端点转发回您的浏览器客户端

在这个流程中,PHP 脚本就像浏览器和 jabber 服务器之间的连接管理器。实际上,在高流量下不建议使用这种方法,因为很快您的 Web 服务器可能会停止接受新的 ajax 轮询,因为 PHP 脚本已经在等待来自 bosh 端点的响应。

您可以尝试Jaxl library 中的boshchat.php 示例示例,它演示了与我上面描述的完全相同的流程。

【讨论】:

以上是关于PHP 和 XMPP 双向的主要内容,如果未能解决你的问题,请参考以下文章

php双向队列的实现

php实现单,双向链表,环形链表解决约瑟夫问题

双向链表的原理与实现

php双向队列

php ACF关系字段的双向功能

SPL 数据结构1-双向链表,堆栈,队列