while (!$conn->isDisconnected()) {
        $payloads = $conn->processUntil(array('message', 'session_start'));
        foreach ($payloads as $event) {
            $pl = $event[1];
            switch ($event[0]) {
                case 'message':
                    $Full_JID = $conn->fulljid;
                    $Bare_JID = $conn->jid;
                    echo "<hr />";
                    //echo  "Message from: " . $pl['from'] . "<br />";
                    if ($pl['from'] == 'cloudprint.google.com') {
                        // We have received a push for this Print Proxy ID + User.
                        // Now we can /fetch print jobs for this Proxy, User, Printer ID
                        echo "Print Job Notification Received for " . $Printer_Proxy . " / " . $Bare_JID . "<br />";
                    }
                    break;
                case 'session_start':
                    $Full_JID = $conn->fulljid;
                    $Bare_JID = $conn->jid;
                    echo "FULL JID: " . $conn->fulljid . "<br />";
                    echo "JID: " . $conn->jid . "<br />";
                    echo "<hr />";
                    $Body = "<iq from='" . $Full_JID . "' to='" . $Bare_JID . "' type='set' id='1'><subscribe xmlns='google:push'><item channel='cloudprint.google.com/proxy/" . $Printer_Proxy . "' from='cloudprint.google.com'/></subscribe></iq>";
                    $conn->subscription($Body);
                    break;
            }
        }
    }
} catch (XMPPHP_Exception $e) {
    die($e->getMessage());
}