XMPP客户端接收服务器消息

时间:2018-12-12 10:11:38

标签: php sockets package xmpp ejabberd

我正在实现自定义的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 个答案:

答案 0 :(得分:1)

我发现我需要将初始的空状态节发送给服务器

<presence/>

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