因此,据我所知,问题在于,当另一端的 Jabber 用户响应时。那里的问题,至少部分是,用户正在响应 Jabber 服务器上的另一个用户,但是您希望 php 脚本知道该响应已经发生而没有保持连接打开(这是有道理的,因为脚本可能不再运行)。
一种选择,虽然是一个非常愚蠢的选择,是:
有一个 php 脚本可以代理到 Jabber 服务器的连接,以便为您页面上的用户发送和接收,
使用 AJAX 为用户发送消息(AJAX 将指向上述脚本,脚本将发送消息。)
有一个 Javascript 无限循环,每 10 秒左右 ping 一次相同的脚本,检查是否有消息。如果有,它们将被传递回客户端并输出给用户。
以上只有两个问题:
1)如果消息传输时用户未连接,php脚本是否仍会看到/获取消息?
2) 每 3 秒发出一次 ajax 请求的客户端循环可能是一个巨大的消耗。
解决方案2:
OpenFire Jabber 服务器。它带有一个内置的网络聊天客户端,它有一个名为 Fastpath 的插件,用于在客户端处理基于 HTML 的聊天(就像“现在与代理聊天!”在太多支持页面上的功能。)
我们在工作中使用它,它是非常可定制的,可以与其他脚本集成(例如,如果你想要一个脚本来从他们的登录中填充用户详细信息,或者添加一些自定义头像,或者其他什么),它(OpenFire ) 有大量其他扩展和插件,如果这不是你想要的,它们可能有你正在寻找的东西。