Search code examples
phpsocketspackagexmppejabberd

XMPP client receiving server messages


I am implementing my custom XMPP PHP library (Packagist repo) and I have trouble fetching messages (that the client sent) from XMPP server.

Library is using PHP sockets to connect to the server, and I am able to fetch a response from server when initially connecting and authenticating. I can also send a message from server to the client, and that part works.

I can't however receive a message.

This is the code I am using when receiving anything from server:

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";
    }
}

This while loop is here to fetch all one-batch responses from the server, and it reads from server while it has something to read, otherwise it terminates the connection.

In the main program I am thus doing a do{...}while(true) and putting this method inside so that it doesn't terminate ever. But still I am not getting any response when sending the other way around, from client back to server.


Solution

  • I have found that I needed to send initial empty presence stanza to server

    <presence/>
    

    Once I got the server response back, so did the message responses started incoming.