接口对象的通用属性: clientList

  • 名称: clientList.
  • 类型: array.
  • 描述: clientList用来获取当前实例下的当前进程中的所有的客户端链接对象的列表. 数组中每个元素都是一个对象, 是传输层协议类的对象. 例如一个TCP协议类的对象.
  • 提示: 在实例化这个接口的时候clientList属性肯定是空, 因为MeepoPS还没有启动. 在\MeepoPS\runMeepoPS();之后也不能调用clientList属性, 因为\MeepoPS\runMeepoPS();之后的代码是不执行的. 因此这个属性在回调函数中使用, 关于回调函数, 后面会讲到.
  • 备注: 循环clientList, 调用其中的每一个元素的send()方法, 这, 就是广播!
  • 警告: 此属性只能使用, 不能修改!

示例:

这是我们自行编写的代码: demo.php

<?php
//引入MeepoPS
require_once 'MeepoPS/index.php';

//使用文本传输的Telnet接口类
$telnet = new \MeepoPS\Api\Telnet('0.0.0.0', '19910');

//设置回调函数 - 这是所有应用的业务代码入口 - 您的所有业务代码都编写在这里
$telnet->callbackNewData = 'callbackNewData';

//启动MeepoPS
\MeepoPS\runMeepoPS();

//收到新消息的时候触发此回调函数
function callbackNewData($connect, $data){
    var_dump('用户ID'.$connect->id.'说:'.$data."\n");
    //给所有用户发送消息(群聊)
    foreach($connect->instance->clientList as $client){
        if($connect->id != $client->id){
            $client->send('用户'.$connect->id.'说: '.$data."\n");
        }
    }
}

其中, callbackNewData函数还可以用另一种方式实现:

<?php
//收到新消息的时候触发此回调函数
function callbackNewData($connect, $data){
    var_dump('用户ID'.$connect->id.'说:'.$data."\n");
    //给所有用户发送消息(群聊)
    global $telnet;
    foreach($telnet->clientList as $client){
        $client->send('用户'.$connect->id.'说: '.$data."\n");
    }
}

当然, 回调函数是可以写成匿名函数的形式. 如:

<?php
//引入MeepoPS
require_once 'MeepoPS/index.php';

//使用文本传输的Telnet接口类
$telnet = new \MeepoPS\Api\Telnet('0.0.0.0', '19910');

//设置回调函数 - 这是所有应用的业务代码入口 - 您的所有业务代码都编写在这里
//收到新消息的时候触发此回调函数
$telnet->callbackNewData = function ($connect, $data){
                               var_dump('用户ID'.$connect->id.'说:'.$data."\n");
                               //给所有用户发送消息(群聊)
                               foreach($connect->instance->clientList as $client){
                                   if($connect->id != $client->id){
                                       $client->send('用户'.$connect->id.'说: '.$data."\n");
                                   }
                               }
                           };

//启动MeepoPS
\MeepoPS\runMeepoPS();

results matching ""

    No results matching ""