web-msg-sender icon indicating copy to clipboard operation
web-msg-sender copied to clipboard

请问web-msg-sender怎么使用自定义的array?

Open mdys opened this issue 5 years ago • 0 comments

// 全局数组保存uid在线数据 $uidConnectionMap = array(); $live_agent_arr=array(); //自定义了个函数,在 $socket->on( 'login', function ( $uid )use( $socket ) 引用是null的,不解

echo "is_arraya-".is_array($live_agent_arr)." is_nulla-".is_null($live_agent_arr)." is_stringa-".is_string($live_agent_arr)."\n\n";

// PHPSocketIO服务 $sender_io = new SocketIO( 2120 ); // 客户端发起连接事件时,设置连接socket的各种事件回调 $sender_io->on( 'connection', function ( $socket ) { // 当客户端发来登录事件时触发

$socket->on( 'login', function ( $uid )use( $socket ) {
    global $uidConnectionMap,$last_online_count,$last_online_page_count,$live_agent_arr;
    // 已经登录过了
    
    if ( isset( $socket->uid ) ) {
        return;
    }
    // 更新对应uid的在线数据
    $uid = ( string )$uid;
    if ( !isset( $uidConnectionMap[ $uid ] ) ) {
        $uidConnectionMap[ $uid ] = 0;
    }
    
    echo "is_arrayb-".is_array($uidConnectionMap)." is_nullb-".is_null($uidConnectionMap)." is_stringb-".is_string($uidConnectionMap)."\n\n"; //执行结果 is_array($uidConnectionMap) 可以 true
    echo "is_array-".is_array($live_agent_arr)." is_null-".is_null($live_agent_arr)." is_string-".is_string($live_agent_arr)."\n\n";  //执行结果 is_array($live_agent_arr) 是flase, is_null($live_agent_arr)=true

    // 这个uid有++$uidConnectionMap[$uid]个socket连接
    ++$uidConnectionMap[ $uid ];
   
    if(isset($live_agent_arr)){
        array_push( $live_agent_arr, array( "exten" => $uid, "channel" => "" ) );
    }
    // 将这个连接加入到uid分组,方便针对uid推送数据
    $socket->join( $uid );
    $socket->uid = $uid;

} );

} );

我十分不理解的是,为何 我自己定义的

$live_agent_arr 在 function ($uid) use($socket) 是 null, 而例子里自带的$uidConntionMap可以正常使用? 我该怎么样使用自己定义的array?

请各位大神不吝赐教,小白跪谢!!!

mdys avatar May 02 '19 04:05 mdys