zorn-v / xmpp
XMPP 协议(Jabber)连接库
1.0.1
2024-04-15 21:59 UTC
Requires
- php: ^5.6 || ^7.0 || ^8.0
- psr/log: ^1.0
Requires (Dev)
- behat/behat: ^2.5.5
- monolog/monolog: ^1.22
- phpunit/phpunit: ^5.7.20
- satooshi/php-coveralls: ^1.0
- symfony/console: ^2.8
- symfony/dependency-injection: ^2.8
- symfony/finder: ^2.8
Suggests
- psr/log-implementation: Allows more advanced logging of the xmpp connection
This package is auto-updated.
Last update: 2024-09-15 23:05:41 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。
待办事项
- 更好地集成通道
- 服务器地址的工厂方法
- 改进文档