updivision / xmpp
Library for XMPP protocol (Jabber) connections
Requires
- php: >=5.3.3
- psr/log: ~1.0
Requires (Dev)
- behat/behat: ~2.5
- monolog/monolog: ~1.11
- phpunit/phpunit: ~4.3
- satooshi/php-coveralls: ~0.6
Suggests
- psr/log-implementation: Allows more advanced logging of the xmpp connection
This package is not auto-updated.
Last update: 2024-11-15 20:58:29 UTC
README
Library for XMPP protocol connections (Jabber) for PHP.
SYSTEM REQUIREMENTS
- PHP >= 5.3.3
- psr/log
- psr/log-implementation - like monolog/monolog for logging (optional)
INSTALLATION
New to Composer? Read the introduction. Add the following to your composer file:
{ "require": { "updivision/xmpp": "*" } }
DOCUMENTATION
This library uses an object to hold options:
use Updivision\Xmpp\Options; $options = new Options($address); $options->setUsername($username) ->setPassword($password);
The server address must be in the format tcp://myjabber.com:5222
.
If the server supports TLS the connection will automatically be encrypted.
You can also pass a PSR-2-compatible object to the options object:
$options->setLogger($logger)
The client manages the connection to the Jabber server and requires the options object:
use Updivision\Xmpp\Client; $client = new Client($options); // optional connect manually $client->connect();
For sending data you just need to pass a object that implements Updivision\Xmpp\Protocol\ProtocolImplementationInterface
:
use Updivision\Xmpp\Protocol\Roster; use Updivision\Xmpp\Protocol\Presence; use Updivision\Xmpp\Protocol\Message; // fetch roster list; users and their groups $client->send(new Roster); // set status to online $client->send(new Presence); // send a message to another user $message = new Message; $message->setMessage('test') ->setTo('nickname@myjabber.com') $client->send($message); // join a channel $channel = new Presence; $channel->setTo('channelname@conference.myjabber.com') ->setNickName('mynick'); $client->send($channel); // send a message to the above channel $message = new Message; $message->setMessage('test') ->setTo('channelname@conference.myjabber.com') ->setType(Message::TYPE_GROUPCHAT); $client->send($message);
After all you should disconnect:
$client->disconnect();
DEVELOPING
If you like this library and you want to contribute, make sure the unit-tests and integration tests are running. Composer will help you to install the right version of PHPUnit and Behat.
composer install --dev
After that:
./vendor/bin/phpunit -c tests
./vendor/bin/behat --config=tests/behat.yml --strict
New features should allways tested with Behat.
LICENSE
BSD-2-Clause. See the LICENSE.
TODO
- Better integration of channels
- Factory method for server addresses
- improve documentation