Browse Source

切换 EventSource

master
wanghongjun 3 years ago
parent
commit
888e9ccec1
  1. 50
      web/ws_task_real.php

50
web/ws_task_real.php

@ -2,8 +2,14 @@
/** /**
* 总览 * 总览
*/ */
use Workerman\Worker;
use Workerman\Timer; header("Access-Control-Allow-Origin:*");
header('X-Accel-Buffering: no');
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
ob_end_clean();
ob_implicit_flush(1);
use app\common\dm\Dm; use app\common\dm\Dm;
use app\common\logic\PassFlow; use app\common\logic\PassFlow;
require_once __DIR__ . '/workman/vendor/autoload.php'; require_once __DIR__ . '/workman/vendor/autoload.php';
@ -15,18 +21,10 @@ require_once __DIR__ . '../../source/application/common.php';
$config = require_once __DIR__ . '../../source/application/database.php'; $config = require_once __DIR__ . '../../source/application/database.php';
date_default_timezone_set('Asia/Shanghai'); date_default_timezone_set('Asia/Shanghai');
$dm = new Dm($config['connections']['dm']);
$worker = new Worker('websocket://0.0.0.0:1234'); $xh = 0;
$worker->count = 4; while($xh < 1) {
// 进程启动后定时推送数据给客户端
$worker->onWorkerStart = function($worker) use($config) {
# 数据库链接不能在主进程,方法外是主进程
$dm = new Dm($config['connections']['dm']);
// 每2.5秒执行一次
$time_interval = 3;
Timer::add($time_interval, function()use($worker,$dm){
foreach($worker->connections as $connection) {
$data = [ $data = [
'code' => 1, 'code' => 1,
'msg' => 'success' 'msg' => 'success'
@ -49,8 +47,26 @@ $worker->onWorkerStart = function($worker) use($config) {
# 各场馆实时 # 各场馆实时
$data['realTimeData'] = ['data' => PassFlow::realTimeData($dm)]; $data['realTimeData'] = ['data' => PassFlow::realTimeData($dm)];
$connection->send(json_encode($data)); $xh = $xh + 1;
returnEventData($data,"message",$xh);
sleep(3);
}
function returnEventData($returnData, $event='message', $id=0, $retry=0) {
$str = '';
if($id>0) {
$str .= "id: {$id}".PHP_EOL;
}
if($event) {
$str.= "event: {$event}".PHP_EOL;
}
if($retry>0) {
$str .= "retry: {$retry}".PHP_EOL;
}
if(is_array($returnData)) {
$returnData = json_encode($returnData);
} }
}); $str .= "data: {$returnData}".PHP_EOL;
}; $str .= PHP_EOL;
Worker::runAll(); echo $str;
}
Loading…
Cancel
Save