123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- use Workerman\Worker;
- require_once __DIR__ . '/Autoloader.php';
- require_once './Lib/mysql/src/Connection.php';
- use \Workerman\Lib\Timer;
- $ws_worker = new Worker("websocket://0.0.0.0:8844");
- // global $clientArr;
- // $clientArr =[];
- $ws_worker->onWorkerStart = function($ws_worker)
- {
- // 将db实例存储在全局变量中(也可以存储在某类的静态成员中)
- global $websocketDB;
- $websocketDB = new \Workerman\MySQL\Connection('rm-wz98r5cn33zq4ou980o.mysql.rds.aliyuncs.com', '3306', 'idcol20', 'idcol@1234', 'idcol');
- Timer::add(0.5, function()use($ws_worker){
- // global $clientArr;
- global $websocketDB;
- $connections = $ws_worker->connections;
- // var_dump($connections);
- $data = $websocketDB->select('id,client,msg')->from('message')->query();
- if (!empty($data)) {
- foreach ($data as $v) {
- if (!empty($connections[$v['client']])) $connections[$v['client']]->send($v['msg']);
- $websocketDB->query("DELETE FROM `message` WHERE id='{$v['id']}'");
- }
- }
- });
- };
- // 启动1个进程对外提供服务
- $ws_worker->count = 1;
- // 客户端连接回调
- $ws_worker->onConnect = function($connection)
- {
- // global $clientArr;
- // 标记连接的客户端
- // $key=uniqid();
- $key = $connection->id;
- $data = array('status'=>'0000','msg'=>'操作成功','data'=>['clientid'=>$key,'status'=>1]);
- $connection->send(json_encode($data));
- // $clientArr[$key] = $connection;
- };
- // 客户端断开连接
- // $ws_worker->onClose = function($connection)
- // {
- // global $clientArr;
- // if (!empty($clientArr)) {
- // foreach ($clientArr as $k => $v) {
- // if ($v == $connection) {
- // unset($clientArr[$k]);
- // break;
- // }
- // }
- // }
- // };
- // 运行worker
- Worker::runAll();
|