当前位置 : 主页 > 网络编程 > PHP >

swoole websocket 订阅redis消息

来源:互联网 收集:自由互联 发布时间:2021-06-28
gistfile1.txt on('open',function($ws,$request){ $redis = new Swoole\Redis(); $redis-on('message',function(swoole_redis $redis,$result) use ($ws,$request){ var_dump($result); // static $more = false; // if(!$more and $result[0] == 'message')
gistfile1.txt
 on('open',function($ws,$request){
    $redis = new Swoole\Redis();

    $redis->on('message',function(swoole_redis $redis,$result) use ($ws,$request){
        var_dump($result);

        // static $more = false;

        // if(!$more and $result[0] == 'message'){
        //     echo "subscribe new channel \n";
        //     $redis->subscribe('*');
        //     $redis->unsubscribe('msg_0');
        //     $more = true;
        // }
        if($result[0]=='message' && $result[1]=='liweisheng'){
            $ws->push($request->fd,$result[2]);
        }
    });

    $redis->connect('127.0.0.1',6379,function(swoole_redis $redis,$result) use ($ws,$request){
        if($result === false){
            echo "connect to redis server failed. \n";
            return;
        }else{
            echo "success connect. \n";
            $redis->subscribe('liweisheng');
            $ws->push($request->fd,"redis connect success");
        }
    });

    // while(true){
    //     $val = $redis->subscribe(['client']);
    //     if(!$ws->push($request->fd,var_export($val,true))){
    //         if($ws->getLastError() == 8501){
    //             echo "break\n";
    //             break;
    //         }
    //     }
    // }
    echo "server: handshake success with fd{$request->fd}\n";
    $ws->push($request->fd,"this is server");
});

$ws->on('message',function($ws,$frame){
    var_dump($frame);
});

$ws->on('close',function($ws,$fd){
    echo "connection #fd is closed \n";
});

$ws->start();
网友评论