XMPP 客户端接收服务器消息

Posted

技术标签:

【中文标题】XMPP 客户端接收服务器消息【英文标题】:XMPP client receiving server messages 【发布时间】:2018-12-12 10:11:37 【问题描述】:

我正在实现我的自定义 XMPP php 库 (Packagist repo),但我无法从 XMPP 服务器获取消息(客户端发送的)。

库正在使用 PHP 套接字连接到服务器,我能够在最初连接和验证时从服务器获取响应。我也可以从服务器向客户端发送消息,这部分工作。

但是我无法收到消息。

这是我从服务器接收任何内容时使用的代码:

public function getRawResponse()

    // Wait max 3 seconds before terminating the socket
    socket_set_option($this->socket, SOL_SOCKET, SO_RCVTIMEO, ["sec" => $this->options->getSocketWaitPeriod(), "usec" => 0]);

    while ($out = socket_read($this->socket, 2048)) 
        echo "*** Data ***\n\n";
        echo str_replace("><", ">\n<", $out) . "\n\n";
        echo "\n\n************\n";
    

while 循环用于从服务器获取所有一批响应,并在有要读取的内容时从服务器读取,否则终止连接。

因此,在主程序中,我正在执行do...while(true) 并将此方法放入其中,使其永远不会终止。但是从客户端发送回服务器时,我仍然没有得到任何响应。

【问题讨论】:

【参考方案1】:

我发现我需要将初始的空出席信息节发送到服务器

<presence/>

我收到服务器响应后,消息响应也开始传入。

【讨论】:

以上是关于XMPP 客户端接收服务器消息的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 客户端无法接收离线消息

当两个 Jabber (XMPP) 客户端连接时,只有一个能够接收消息,两个都可以发送

XMPP 聊天发送/接收消息同步

保留 XMPP 连接

XMPP 服务器的 Erlang 客户端

XMPP 上的未读消息计数