From 67b175894abc0ecd3a15d0bcb4de45e6d09d1b2a Mon Sep 17 00:00:00 2001
From: annnj-company <380904787@qq.com>
Date: Fri, 24 Apr 2026 09:44:41 +0800
Subject: [PATCH] no commit message
---
pgserver/application/common.php | 6 +-
pgserver/application/push/controller/Push.php | 110 ------------------
pgserver/push.php | 7 +-
3 files changed, 11 insertions(+), 112 deletions(-)
delete mode 100644 pgserver/application/push/controller/Push.php
diff --git a/pgserver/application/common.php b/pgserver/application/common.php
index ac4e10e..e9e6b1d 100644
--- a/pgserver/application/common.php
+++ b/pgserver/application/common.php
@@ -1638,7 +1638,11 @@ function writeLog($log = '', $level = "writelog") {
* @return bool
*/
function pushToAllClients($eventName, $data) {
- $socketUrl = 'http://127.0.0.1:2121';
+ // 读取.env文件中的push配置(INI格式,包含sections)
+ $env = parse_ini_file(__DIR__ . '/../.env', true);
+ $push_config = isset($env['push']) ? $env['push'] : [];
+ $http_port = isset($push_config['http_port']) ? intval($push_config['http_port']) : 22120;
+ $socketUrl = 'http://127.0.0.1:' . $http_port;
$postData = [
'type' => 'broadcast',
diff --git a/pgserver/application/push/controller/Push.php b/pgserver/application/push/controller/Push.php
deleted file mode 100644
index 7309244..0000000
--- a/pgserver/application/push/controller/Push.php
+++ /dev/null
@@ -1,110 +0,0 @@
-emit('push_value', ['value' => $push_value]);
- });
-
- // 客户端发起连接事件时,设置连接socket的各种事件回调
- $sender_io->on('connection', function($socket) use (&$push_value){
- // 当客户端发来登录事件时触发
- $socket->on('login', function ($uid)use($socket){
- global $uidConnectionMap, $last_online_count, $last_online_page_count;
- // 已经登录过了
- if(isset($socket->uid)){
- return;
- }
- // 更新对应uid的在线数据
- $uid = (string)$uid;
- if(!isset($uidConnectionMap[$uid]))
- {
- $uidConnectionMap[$uid] = 0;
- }
- // 这个uid有++$uidConnectionMap[$uid]个socket连接
- ++$uidConnectionMap[$uid];
- // 将这个连接加入到uid分组,方便针对uid推送数据
- $socket->join($uid);
- $socket->uid = $uid;
- // 更新这个socket对应页面的在线数据
- $socket->emit('update_online_count', "当前{$last_online_count}人在线,共打开{$last_online_page_count}个页面");
- });
-
- // 当客户端断开连接是触发(一般是关闭网页或者跳转刷新导致)
- $socket->on('disconnect', function () use($socket) {
- if(!isset($socket->uid))
- {
- return;
- }
- global $uidConnectionMap, $sender_io;
- // 将uid的在线socket数减一
- if(--$uidConnectionMap[$socket->uid] <= 0)
- {
- unset($uidConnectionMap[$socket->uid]);
- }
- });
- });
-
- // 当$sender_io启动后监听一个http端口,通过这个端口可以给任意uid或者所有uid推送数据
- $sender_io->on('workerStart', function()use ($sender_io){
- // 监听一个http端口
- $inner_http_worker = new Worker('http://0.0.0.0:2121');
- // 当http客户端发来数据时触发
- $inner_http_worker->onMessage = function($http_connection, $data)use ($sender_io){
- global $uidConnectionMap;
- $msgContent = $_POST?$_POST:$_GET;
- // 推送数据的url格式 type=publish&to=uid&content=xxxx
- switch(@$msgContent['type']){
- case 'publish':
- $to = $msgContent['to'];
- // 有指定uid则向uid所在socket组发送数据
- if($to){
- $sender_io->to($to)->emit('newMsg', $msgContent['content']);
- // 否则向所有uid推送数据
- }else{
- $sender_io->emit('newMsg', $msgContent['content']);
- }
- // http接口返回,如果用户离线socket返回fail
- if($to && !isset($uidConnectionMap[$to])){
- return $http_connection->send('offline');
- }else{
- return $http_connection->send('ok');
- }
- }
-// $sender_io->to(1)->emit('newMsg', '呀死啦累');
- return $http_connection->send('fail');
- };
- // 执行监听
- $inner_http_worker->listen();
- });
-
- if(!defined('GLOBAL_START'))
- {
- Worker::runAll();
- }
-
- }
-}
diff --git a/pgserver/push.php b/pgserver/push.php
index bbed4f6..3c09222 100644
--- a/pgserver/push.php
+++ b/pgserver/push.php
@@ -16,7 +16,12 @@ $uidConnectionMap = [];
// 模拟推送的数值
$push_value = rand(100, 1000);
// PHPSocketIO服务
-$sender_io = new SocketIO($socket_port);
+// 添加CORS支持配置
+$sender_io = new SocketIO($socket_port, array(
+ 'allowOrigin' => '*',
+ 'allowMethods' => 'GET, POST, OPTIONS',
+ 'allowHeaders' => 'Content-Type',
+));
// 客户端发起连接事件
$sender_io->on('connection', function($socket) use (&$push_value){