enterness / fbns-complement
基于 ReactPHP 的 FBNS PHP 客户端
1.0
2019-09-30 13:49 UTC
Requires
- php: ~5.6|~7.0
Suggests
- ext-event: For more efficient event loop implementation.
- ext-gmp: To be able to run this code on x86 PHP builds.
This package is not auto-updated.
Last update: 2024-09-25 12:05:39 UTC
README
基于 ReactPHP 的 FBNS PHP 客户端。
要求
要运行此代码,您需要在 x86 PHP 构建上安装 GMP 扩展。
安装
composer require valga/fbns-react
基本用法
// Set up a FBNS client. $loop = \React\EventLoop\Factory::create(); $client = new \Fbns\Client\Lite($loop); // Read saved credentials from a storage. $auth = new \Fbns\Client\Auth\DeviceAuth(); try { $auth->read($storage->get('fbns_auth')); } catch (\Exception $e) { } // Connect to a broker. $connection = new \Fbns\Client\Connection($deviceAuth, USER_AGENT); $client->connect(HOSTNAME, PORT, $connection); // Bind events. $client ->on('connect', function (\Fbns\Client\Lite\ConnectResponsePacket $responsePacket) use ($client, $auth, $storage) { // Update credentials and save them to a storage for future use. try { $auth->read($responsePacket->getAuth()); $storage->set('fbns_auth', $responsePacket->getAuth()); } catch (\Exception $e) { } // Register an application. $client->register(PACKAGE_NAME, APPLICATION_ID); }) ->on('register', function (\Fbns\Client\Message\Register $message) use ($app) { // Register received token with an application. $app->registerPushToken($message->getToken()); }) ->on('push', function (\Fbns\Client\Message\Push $message) use ($app) { // Handle received notification payload. $app->handlePushNotification($message->getPayload()); }); // Run main loop. $loop->run();
高级用法
// Set up a proxy. $connector = new \React\Socket\Connector($loop); $proxy = new \Clue\React\HttpProxy('username:password@127.0.0.1:3128', $connector); // Disable SSL verification. $ssl = new \React\Socket\SecureConnector($proxy, $loop, ['verify_peer' => false, 'verify_peer_name' => false]); // Enable logging to stdout. $logger = new \Monolog\Logger('fbns'); $logger->pushHandler(new \Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::INFO)); // Set up a client. $client = new \Fbns\Client\Lite($loop, $ssl, $logger); // Persistence. $client->on('disconnect', function () { // Network connection has been closed. You can reestablish it if you want to. }); $client->connect(HOSTNAME, PORT, $connection) ->otherwise(function () { // Connection attempt was unsuccessful, retry with an exponential backoff. });