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

(急)怎么把前端推送改成php推送

ssh1688

用前端推送可以成功,想改成通過push.php中轉(zhuǎn)一下
?push.php推送端

<?php
/**
 * 認(rèn)真編碼 快樂生活
 * User: helloJiu
 * Date: 2018/9/12
 * Time: 18:06
 */
// 建立socket連接到內(nèi)部推送端口

$client = stream_socket_client('tcp://127.0.0.1:1234', $errno, $errmsg, 1);

$data = array('cmd'=>'add_group', 'group_id'=>'123','message'=>'oo');

fwrite($client, json_encode($data));

// 讀取推送結(jié)果
echo fread($client, 8192);
fclose($client);

前端推送

ws = new WebSocket('wss://socket.a.cn/wss');
ws.onmessage = function(data){console.log(data.data)};
ws.onopen = function() {
    ws.send('{"cmd":"add_group", "group_id":"123"}');
    ws.send('{"cmd":"send_to_group", "group_id":"123", "message":"哈哈哈1"}');
};

服務(wù)端start.php

<?php
    require_once './Workerman/Autoloader.php'; 
    require_once './Workerman/Lib/Timer.php';
    require_once './channel/src/Server.php';
    require_once './channel/src/Client.php';
    use Workerman\Worker;

    $channel_server = new Channel\Server('0.0.0.0', 2206);

    $worker = new Worker('websocket://0.0.0.0:1234');

    $worker->count = 8;
    // 全局群組到連接的映射數(shù)組
    $group_con_map = array();
    $worker->onWorkerStart = function(){
        // Channel客戶端連接到Channel服務(wù)端
        Channel\Client::connect('127.0.0.1', 2206);

        // 監(jiān)聽全局分組發(fā)送消息事件
        Channel\Client::on('send_to_group', function($event_data){
            $group_id = $event_data;
            $message = $event_data;
            global $group_con_map;
            var_dump(array_keys($group_con_map));
            if (isset($group_con_map)) {
                foreach ($group_con_map as $con) {
                    $con->send($message);
                }
            }
        });
    };
    $worker->onMessage = function($con, $data){
        // 加入群組消息{"cmd":"add_group", "group_id":"123"}
        // 或者 群發(fā)消息{"cmd":"send_to_group", "group_id":"123", "message":"這個是消息"}
        $data = json_decode($data, true);
        var_dump($data);
        $cmd = $data;
        $group_id = $data;
        switch($cmd) {
            // 連接加入群組
            case "add_group":
                global $group_con_map;
                // 將連接加入到對應(yīng)的群組數(shù)組里
                $group_con_map = $con;
                // 記錄這個連接加入了哪些群組,方便在onclose的時候清理group_con_map對應(yīng)群組的數(shù)據(jù)
                $con->group_id = isset($con->group_id) ? $con->group_id : array();
                $con->group_id = $group_id;
                break;
            // 群發(fā)消息給群組
            case "send_to_group":
                // Channel\Client給所有服務(wù)器的所有進(jìn)程廣播分組發(fā)送消息事件
                Channel\Client::publish('send_to_group', array(
                    'group_id'=>$group_id,
                    'message'=>$data
                ));
                break;
        }
    };
    // 這里很重要,連接關(guān)閉時把連接從全局群組數(shù)據(jù)中刪除,避免內(nèi)存泄漏
    $worker->onClose = function($con){
        global $group_con_map;
        // 遍歷連接加入的所有群組,從group_con_map刪除對應(yīng)的數(shù)據(jù)
        if (isset($con->group_id)) {
            foreach ($con->group_id as $group_id) {
                unset($group_con_map);
            }
            if (empty($group_con_map)) {
                unset($group_con_map);
            }
        }
    };

    Worker::runAll();
2959 1 0
1個回答

walkor 打賞
require_once __DIR__ . '/Channel/src/Client.php';
Channel\Client::connect('127.0.0.1', 2206);
Channel\Client::publish('send_to_group', $event_data);
年代過于久遠(yuǎn),無法發(fā)表回答
??