Я внедряю свою собственную 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)
и помещаю этот метод внутрь, чтобы он никогда не прерывался.Но все равно я не получаю никакого ответа при пересылке с клиента обратно на сервер.