XMPP-клиент получает сообщения от сервера - PullRequest
0 голосов
/ 12 декабря 2018

Я внедряю свою собственную PHP-библиотеку XMPP ( 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 голосов
/ 13 декабря 2018

Я обнаружил, что мне нужно было отправить начальную пустую строфу присутствия на сервер

<presence/>

Как только я получил ответ от сервера, ответные сообщения начали поступать.

...