国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

使用的WorkerMan中phpsocket-io,總出現(xiàn)收不到數(shù)據(jù)問題

苑鎮(zhèn)

問題描述

使用的WorkerMan中phpsocket-io,總出現(xiàn)收不到數(shù)據(jù)問題

程序代碼或配置

// 全局?jǐn)?shù)組保存uid在線數(shù)據(jù)
$uidConnectionMap_CRT_pc = array();

// PHPSocketIO服務(wù)
$sender_io_CRT_pc = new SocketIO(22120,$context);

// 客戶端發(fā)起連接事件時(shí),設(shè)置連接socket的各種事件回調(diào)
$sender_io_CRT_pc->on('connection', function($socket)use($sender_io_CRT_pc)
{
    //echo "new connection coming\n";

    // 當(dāng)客戶端發(fā)來登錄事件時(shí)觸發(fā)
    $socket->on('login', function ($uid)use($socket)
    {
        global $uidConnectionMap_CRT_pc;
        // 已經(jīng)登錄過了
        if(isset($socket->uid))
        {
            return;
        }

        // 更新對(duì)應(yīng)uid的在線數(shù)據(jù)
        $uid = (string)$uid;
        if(!isset($uidConnectionMap_CRT_pc[$uid]))
        {
            $uidConnectionMap_CRT_pc[$uid] = 0;
        }
        // 這個(gè)uid有++$uidConnectionMap_CRT_pc[$uid]個(gè)socket連接
        ++$uidConnectionMap_CRT_pc[$uid];
        // 將這個(gè)連接加入到uid分組,方便針對(duì)uid推送數(shù)據(jù)
        $socket->join($uid);
        $socket->uid = $uid;
    });

    // 當(dāng)客戶端斷開連接是觸發(fā)(一般是關(guān)閉網(wǎng)頁或者跳轉(zhuǎn)刷新導(dǎo)致)
    $socket->on('disconnect', function () use($socket)
    {
        if(!isset($socket->uid))
        {
            return;
        }

        global $uidConnectionMap_CRT_pc, $sender_io_CRT_pc;

        // 將uid的在線socket數(shù)減一
        if(--$uidConnectionMap_CRT_pc[$socket->uid] <= 0)
        {
            unset($uidConnectionMap_CRT_pc[$socket->uid]);
        }
    });
});

// 當(dāng)$sender_io_CRT_pc啟動(dòng)后監(jiān)聽一個(gè)http端口,通過這個(gè)端口可以給任意uid或者所有uid推送數(shù)據(jù)
$sender_io_CRT_pc->on('workerStart', function()
{
    // 監(jiān)聽一個(gè)http端口
    $inner_http_worker_CRT = new Worker('http://172.16.137.103:22121');

    // 當(dāng)http客戶端發(fā)來數(shù)據(jù)時(shí)觸發(fā)
    $inner_http_worker_CRT->onMessage = function(TcpConnection $inner_http_worker_CRT_pc_pc, Request $request)
    {
        global $uidConnectionMap_CRT_pc;
        $post = $request->post();
        $post = $post ? $post : $request->get();

        // 推送數(shù)據(jù)的url格式 type=publish&to=uid&content=xxxx
        switch(@$post['type'])
        {
            case 'fire'://設(shè)備報(bào)警用
                global $sender_io_CRT_pc;
                $to = @$post['to'];

                // 有指定uid則向uid所在socket組發(fā)送數(shù)據(jù)
                if($to)
                {
                    $sender_io_CRT_pc->to($to)->emit('new_msg', $post['content']);
                }
                else
                {//否則向所有uid推送數(shù)據(jù)
                    $sender_io_CRT_pc->emit('new_msg', @$post['content']);
                }
                break;
            case 'video'://視頻彈窗用
                global $sender_io_CRT_pc;
                $to = @$post['to'];

                // 有指定uid則向uid所在socket組發(fā)送數(shù)據(jù)
                if($to)
                {
                    $sender_io_CRT_pc->to($to)->emit('video_msg', $post['content']);
                }
                else
                {//否則向所有uid推送數(shù)據(jù)
                    $sender_io_CRT_pc->emit('video_msg', @$post['content']);
                }
                break;
            case 'device'://設(shè)備在線離線狀態(tài)
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('device', $post['content']);
                break;
            case 'mail'://站內(nèi)信
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('mail', @$post['content']);
                break;
            case "videoPay"://攝像頭充值結(jié)果推送
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('videoPay', @$post['content']);
                break;
            case "wechat"://充值結(jié)果推送
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('wechat', @$post['content']);
                break;
            case "firereview"://消警復(fù)核數(shù)量推送
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('firereview', @$post['content']);
                break;
            case "wechatLogin"://微信掃碼登錄結(jié)果
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('wechatLogin', @$post['content']);
                break;
            case "sendtoMaster"://處理報(bào)警推送消息給總管理
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('sendtoMaster', @$post['content']);
                break;
            case "companystatus"://強(qiáng)制全部員工下線并禁止登錄
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('companystatus', @$post['content']);
                break;
            case "sim"://SIM到期提醒
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('sim', @$post['content']);
                break;
            case "sim_warning"://SIM流量預(yù)警提醒
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('sim_warning', @$post['content']);
                break;
            case "host920"://920推送子設(shè)備狀態(tài)
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('host920', @$post['content']);
                break;
            case "host920More"://920推送總線盤
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('host920More', @$post['content']);
                break;
            case "control602"://602推送設(shè)備狀態(tài)
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('control602', @$post['content']);
                break;
            case "control656"://656推送設(shè)備狀態(tài)
                global $sender_io_CRT_pc;
                $to = @$post['to'];
                $sender_io_CRT_pc->to($to)->emit('control656', @$post['content']);
                break;
        }
        return $inner_http_worker_CRT_pc_pc->send('fail');
    };
    // 執(zhí)行監(jiān)聽
    $inner_http_worker_CRT->listen();
});

重現(xiàn)問題的步驟

收不到推送數(shù)據(jù)的時(shí)候,socket一直顯示待處理
截圖

操作系統(tǒng)環(huán)境及workerman/webman等具體版本

Centos7,Workerman版本4.0.4
截圖

請(qǐng)問這個(gè)問題是出在哪里?

478 1 0
1個(gè)回答

walkor 打賞

業(yè)務(wù)邏輯都去掉試下有沒有問題,沒問題的話就是業(yè)務(wù)代碼問題,然后自己一行一行排查

  • 苑鎮(zhèn) 2024-11-27

    我試過用postman調(diào)用,失敗的時(shí)候返回的搜是fail

  • 苑鎮(zhèn) 2024-11-27

    我直接把等待的URL地址用瀏覽器訪問返回
    {
    "code": 1,
    "message": "Session ID unknown"
    }

  • walkor 2024-11-27

    顯示 Session ID unknown 是正常的

  • 苑鎮(zhèn) 2024-11-27

    那這個(gè)怎么辦呢

  • walkor 2024-11-27

    業(yè)務(wù)邏輯都去掉試下有沒有問題,沒問題的話就是業(yè)務(wù)代碼問題,然后自己一行一行排查

??