cbl / php-pusher
一个用于创建简单WebSocket推送服务器的PHP框架。
1.2.3
2017-07-15 13:54 UTC
Requires
- php: >=5.3.3
- cboden/ratchet: ^0.3.6
- textalk/websocket: ^1.2
README
这是一个基于 Ratchet 的PHP WebSocket框架,用于创建强大的WebSocket服务器,可以向客户端推送数据,以保持客户端的更新。
需求
需要shell访问权限,推荐root权限。
入门指南
要安装框架,请运行: composer require cbl/php-pusher
代码示例
服务器
<?php use PhpPusher\Server; require_once __DIR__ . "/../../vendor/autoload.php"; class PusherServer extends Server { public $key = 'Password'; public $port = 8080; public function authLogin($client) { $cookies = $client->WebSocket->request->getCookies(); // return false if the client has no session if(!isset($cookies['session'])) return false; $session = $cookies['session']; if(!$session) return false; // Return the user id return 5; //return getUserIdBySession(urldecode($session)); } public function authAdmin($client) { $admin_ids = [1,5,9]; if(in_array($client->login, $admin_ids)) return true; return false; } } // config $config = [ // Store multiple datasets in cache. 'list' => [ 'chat_messages' => [ 'save_auth' => true ], 'wallet' => [ 'cache' => false, 'auth' => ['login' => 'only'] ] ], // Store only one dataset in cache 'dict' => [ 'player' => [ 'auth' => ['login' => true] ] ], 'specials' => [ 'online_counter' => true ] ]; // Create Server $server = new PusherServer(); $server->setConfig($config); $server->run();
客户端
<?php use PhpPusher\Client; require_once __DIR__ . "/../../vendor/autoload.php"; $key = 'Password'; $client = new Client($key); // Set a receiver id $receiver = 5; // Send a Chat Message $client->send('chat_message', 'Hi!', $receiver); // Send wallet amount only to the receiver $client->send('wallet', 100, $receiver); // Start a timer $client->startTimer('game_timer', 30, true); // Publish game after timer $client->send('game', [ 'data' => 'Some Data.' ]);