zorn-v/xmpp

XMPP 协议(Jabber)连接库

1.0.1 2024-04-15 21:59 UTC

README

PHP 的 XMPP 协议连接库(Jabber)

系统需求

  • PHP >= 5.6
  • psr/log
  • (可选) psr/log-implementation - 如 monolog/monolog 用于日志记录

安装

安装 Composer 然后执行

composer require zorn-v/xmpp

文档

您可以在 example.php 中查看自动回复机器人的示例

此库使用对象来保存选项

use Fabiang\Xmpp\Options;
$options = new Options($address);
$options->setUsername($username)
    ->setPassword($password);

服务器地址必须为 myjabber.com:5222 格式。如果服务器支持 TLS,连接将自动加密。

如果您想使用 SOCKS 代理,可以通过以下方式设置:

$options->setSocksProxyAddress('localhost:9050');

$options->setSocksProxyAddress('username:password@localhost:9050');

您也可以将一个 PSR-3 兼容的对象传递给选项对象

$options->setLogger($logger);

客户端管理到 Jabber 服务器的连接,并需要选项对象

use Fabiang\Xmpp\Client;
$client = new Client($options);
// optional connect manually
$client->connect();

您可以使用 getMessages() 获取所有传入的消息

print_r($client->getMessages());
Array
(
    [0] => Array
        (
            [from] => user@myjabber.com/resource
            [message] => Message text
        )

)

对于发送数据,您只需要传递一个实现了 Fabiang\Xmpp\Protocol\ProtocolImplementationInterface 的对象

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('nickname@myjabber.com');
$client->send($message);

// join a channel
$channel = new Presence;
$channel->setTo('channelname@conference.myjabber.com/nickname')
    ->setPassword('channelpassword');
$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);

最后,您应该断开连接

$client->disconnect();

开发

如果您喜欢这个库并希望做出贡献,请确保单元测试和集成测试正在运行。Composer 将帮助您安装正确的 PHPUnit 和 Behat 版本。

composer install

之后

./vendor/bin/phpunit
./vendor/bin/behat

新功能应始终使用 Behat 进行测试。

许可证

BSD-2-Clause。请参阅 LICENSE

待办事项

  • 更好地集成通道
  • 服务器地址的工厂方法
  • 改进文档