123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- /**
- * @file: XMPPHP Cli example
- *
- * @info: If this script doesn't work, are you running 64-bit PHP with < 5.2.6?
- */
- /**
- * Activate full error reporting
- * error_reporting(E_ALL & E_STRICT);
- *
- * XMPPHP Log levels:
- *
- * LEVEL_ERROR = 0;
- * LEVEL_WARNING = 1;
- * LEVEL_INFO = 2;
- * LEVEL_DEBUG = 3;
- * LEVEL_VERBOSE = 4;
- */
- session_start();
- header('content-type', 'plain/text');
- $conf = [
- 'server' => 'talk.google.com',
- 'port' => 5222,
- 'username' => 'username',
- 'password' => 'password',
- 'proto' => 'xmpphp',
- 'domain' => 'gmail.com',
- 'printlog' => true,
- 'loglevel' => XMPPHP\Log::LEVEL_VERBOSE,
- ];
- // Easy and simple for access to variables with their names
- extract($conf);
- $conn = new XMPPHP\XMPP($server, $port, $username, $password, $proto, $domain, $printlog, $loglevel);
- $conn->autoSubscribe();
- try {
- if (isset($_SESSION['messages'])) {
- foreach ($_SESSION['messages'] as $message) {
- echo $message;
- flush();
- }
- } else {
- $_SESSION['messages'] = [];
- }
- $conn->connect();
- $events = ['message', 'presence', 'end_stream', 'session_start', 'vcard'];
- $payloads = $conn->processUntil($events);
- foreach ($payloads as $result) {
- list($event, $data) = $result;
- if (isset($data)) {
- extract($data);
- }
- switch ($event) {
- case 'message':
- if (!$body) {
- break;
- }
- $cmd = explode(' ', $body);
- $msg = str_repeat('-', 80);
- $msg .= "\nMessage from: $from\n";
- if (isset($subject)) {
- $msg .= "Subject: $subject\n";
- }
- $msg .= $body . "\n";
- $msg .= str_repeat('-', 80);
- echo "<pre>$msg</pre>";
- if (isset($cmd[0])) {
- if ($cmd[0] == 'quit') {
- $conn->disconnect();
- }
- if ($cmd[0] == 'break') {
- $conn->send('</end>');
- }
- }
- $_SESSION['messages'][] = $msg;
- flush();
- break;
- case 'presence':
- echo "Presence: $from [$show] $status\n";
- break;
- case 'session_start':
- echo "Session start\n";
- $conn->getRoster();
- $conn->presence('Quasar!');
- break;
- }
- }
- } catch (XMPPHP\Exception $e) {
- die($e->getMessage());
- }
- $conn->saveSession();
- echo '<img src="http://xmpp.org/images/xmpp.png" onload="window.location.reload()" />';
|