no commit message
This commit is contained in:
@@ -28,30 +28,12 @@ $sender_io->on('connection', function($socket) use (&$push_value){
|
||||
// 客户端连接时立即发送当前数值
|
||||
$socket->emit('push_value', ['value' => $push_value]);
|
||||
|
||||
// 连接时自动推送最新的未回价数量
|
||||
try {
|
||||
// 从ThinkPHP数据库配置文件读取数据库连接信息
|
||||
$db_config = require __DIR__ . '/config/database.php';
|
||||
$db_host = isset($db_config['hostname']) ? $db_config['hostname'] : 'localhost';
|
||||
$db_name = isset($db_config['database']) ? $db_config['database'] : 'pgserver';
|
||||
$db_user = isset($db_config['username']) ? $db_config['username'] : 'root';
|
||||
$db_pass = isset($db_config['password']) ? $db_config['password'] : '';
|
||||
$db_port = isset($db_config['hostport']) ? $db_config['hostport'] : '3306';
|
||||
$db_charset = isset($db_config['charset']) ? $db_config['charset'] : 'utf8';
|
||||
|
||||
// 使用PDO连接数据库查询最新数量
|
||||
$dsn = "mysql:host=$db_host;port=$db_port;dbname=$db_name;charset=$db_charset";
|
||||
$pdo = new PDO($dsn, $db_user, $db_pass);
|
||||
$stmt = $pdo->query('SELECT COUNT(*) as count FROM pg_inquiry WHERE return_price_status = 2');
|
||||
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
$count = $result['count'] ?? 0;
|
||||
|
||||
// 推送未回价数量
|
||||
$socket->emit('updateUnreturnedCount', ['count' => $count]);
|
||||
error_log("WebSocket连接时推送未回价数量: $count");
|
||||
} catch (Exception $e) {
|
||||
error_log("WebSocket连接时获取未回价数量失败: " . $e->getMessage());
|
||||
}
|
||||
// 连接时发送刷新事件,让客户端主动获取所有数量(避免重复查询逻辑)
|
||||
error_log("WebSocket客户端连接,发送4个刷新事件");
|
||||
$socket->emit('updateUnreturnedCount', ['refresh' => true]);
|
||||
$socket->emit('updateEstimatePendingCount', ['refresh' => true]);
|
||||
$socket->emit('updateReportProduceCount', ['refresh' => true]);
|
||||
$socket->emit('updateSurveyFollowCount', ['refresh' => true]);
|
||||
|
||||
$socket->on('login', function ($uid)use($socket){
|
||||
global $uidConnectionMap;
|
||||
@@ -65,6 +47,24 @@ $sender_io->on('connection', function($socket) use (&$push_value){
|
||||
++$uidConnectionMap[$uid];
|
||||
$socket->join($uid);
|
||||
$socket->uid = $uid;
|
||||
|
||||
// 登录时推送刷新事件,让客户端主动获取所有数量
|
||||
$socket->emit('updateSurveyFollowCount', ['refresh' => true]);
|
||||
$socket->emit('updateUnreturnedCount', ['refresh' => true]);
|
||||
$socket->emit('updateEstimatePendingCount', ['refresh' => true]);
|
||||
$socket->emit('updateReportProduceCount', ['refresh' => true]);
|
||||
error_log("WebSocket登录时推送用户{$uid}的4个刷新事件");
|
||||
});
|
||||
|
||||
// 处理客户端主动刷新请求
|
||||
$socket->on('refreshAllCounts', function()use($socket){
|
||||
error_log("收到客户端刷新请求");
|
||||
// 发送刷新事件给当前客户端
|
||||
$socket->emit('updateSurveyFollowCount', ['refresh' => true]);
|
||||
$socket->emit('updateUnreturnedCount', ['refresh' => true]);
|
||||
$socket->emit('updateEstimatePendingCount', ['refresh' => true]);
|
||||
$socket->emit('updateReportProduceCount', ['refresh' => true]);
|
||||
error_log("已向客户端发送刷新事件(包含报告数量)");
|
||||
});
|
||||
|
||||
$socket->on('disconnect', function () use($socket) {
|
||||
@@ -128,15 +128,24 @@ $sender_io->on('workerStart', function()use ($sender_io, $http_port){
|
||||
$event = isset($msgContent['event']) ? $msgContent['event'] : '';
|
||||
$eventData = isset($msgContent['data']) ? $msgContent['data'] : '';
|
||||
|
||||
error_log("Broadcast check - event: '$event', data: '$eventData'");
|
||||
error_log("=== WebSocket广播调试 ===");
|
||||
error_log("事件名称: '$event'");
|
||||
error_log("原始数据: '$eventData'");
|
||||
|
||||
if(!empty($event)){
|
||||
if(is_string($eventData)){
|
||||
$decoded = json_decode($eventData, true);
|
||||
$eventData = $decoded !== null ? $decoded : $eventData;
|
||||
}
|
||||
$sender_io->emit($event, $eventData);
|
||||
error_log("Broadcast sent - event: $event, data: " . print_r($eventData, true));
|
||||
error_log("解码后数据: " . print_r($eventData, true));
|
||||
|
||||
// 获取所有连接的客户端并发送消息
|
||||
// PHPSocketIO 1.x 使用 connections 数组获取所有连接
|
||||
foreach ($sender_io->connections as $connection) {
|
||||
$connection->emit($event, $eventData);
|
||||
}
|
||||
error_log("广播已发送到所有客户端 - 事件: $event");
|
||||
|
||||
return $http_connection->send('ok');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user