JACK XMPP 守护进程发送和接收消息

Posted

技术标签:

【中文标题】JACK XMPP 守护进程发送和接收消息【英文标题】:JAXL XMPP Daemon to send and recieve messages 【发布时间】:2012-02-22 04:06:19 【问题描述】:

我用 php (Debian 6.0) 编写了一个 JAXL 守护程序,它坐下来侦听传入的消息,然后通过将有效负载传递给 API 来处理传入的消息。 (监听 user1@server 上的传入消息)

然后我遇到的麻烦是向用户发送一条消息。我现在的做法是启动另一个 XMPP 守护程序,发送消息,然后关闭守护程序。这样做的问题是它正在启动另一个带有 JID user1@server 的守护进程来发送到 user2@server。当我关闭 JAXL 时,它也会关闭“监听”守护进程。

我考虑在发送消息时再次启动监听守护程序,但启动时间太长(1-2 秒),而且我的应用真的无法承受这样的等待时间。

有没有人知道我该如何解决这个问题,也许也可以使用监听守护进程来发送消息?

【问题讨论】:

【参考方案1】:

很高兴听到这个进展。虽然从您的示例代码$jaxl->sendMessage() 看来您正在使用 JAXL v2.x。如果您对 v2.x 没有任何硬编码依赖,我强烈建议您升级到 JAXL v3.x。

如果您正在考虑使用 v3.x,您可以关注这个 google 组线程 Send a message via an existing active connection,它现在具有通过与在后台运行的 xmpp 守护进程 (IPC) 通信来发送 xmpp 有效负载的官方方式。您甚至可以使用 v3.x 远程控制您的 xmpp 守护进程等等。

【讨论】:

感谢您的评论,我相信您是编写 JAXL 的人?从我最初的研究来看,这看起来很有希望,我一定会考虑实现它。 JAXL 3.x 是否更面向对象?那是我遇到的另一个问题 - 它似乎是为 PHP 4 编写的。 是的,直接来自文档我将引用“在 Jaxl 内部,您将与之交互的所有内容都将是一个对象,它将发出事件和回调,我们将能够在我们的应用程序中捕获这些事件和回调以进行自定义处理和路由" - jaxl.readthedocs.org/en/latest/users/…【参考方案2】:

对于任何对此感兴趣的人,我最终编辑 JAXL 以在守护程序运行时侦听 UDP 套接字,如果在该 UDP 套接字上接收到数据,则使用 $jaxl->sendMessage(... ) 并发送消息。然后我编写了一个简单的函数,只要我想发送消息,它就会向这个 UDP 套接字发送数据。

【讨论】:

以上是关于JACK XMPP 守护进程发送和接收消息的主要内容,如果未能解决你的问题,请参考以下文章

Android保活系列之——双进程守护

并发编程 之 进程 之 进程的模型: 进程同步的工具 继 创建进程( 守护进程)

向守护进程发送 SIGINT

NodeJS Node-apn 实现作为守护进程

Kafka 运行命令

Linux-守护进程的引入