Library for XMPP protocol (Jabber) connections
Library for XMPP protocol connections (Jabber) for PHP.
- PHP minimum 5.6 or minimum 7.0
- (optional) psr/log-implementation - like monolog/monolog for logging
New to Composer? Read the introduction. Add the following to your composer file:
composer require fabiang/xmpp
This library uses an object to hold options:
use Fabiang\Xmpp\Options; $options = new Options($address); $options->setUsername($username) ->setPassword($password);
The server address must be in the format
If the server supports TLS the connection will automatically be encrypted.
You can also pass a PSR-2-compatible object to the options object:
The client manages the connection to the Jabber server and requires the options object:
use Fabiang\Xmpp\Client; $client = new Client($options); // optional connect manually $client->connect();
For sending data you just need to pass a object that implements
use Fabiang\Xmpp\Protocol\Roster; use Fabiang\Xmpp\Protocol\Presence; use Fabiang\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('email@example.com') $client->send($message); // join a channel $channel = new Presence; $channel->setTo('firstname.lastname@example.org') ->setPassword('channelpassword') ->setNickName('mynick'); $client->send($channel); // send a message to the above channel $message = new Message; $message->setMessage('test') ->setTo('email@example.com') ->setType(Message::TYPE_GROUPCHAT); $client->send($message);
After all you should disconnect:
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.
New features should always tested with Behat.
BSD-2-Clause. See the LICENSE.
- Better integration of channels
- Factory method for server addresses
- improve documentation