Connection

connection表示beyod服务器与客户端的tcp连接封装,是非常重要的概念。

重要属性:

$id: int 连接号,从1开始编号,只读属性,beyod使用id复用机制,即当连接断开后,其id将被后续的新连接使用,不存在id不断增长导致耗尽的问题。

$peer: string 客户端的ip和端口,冒号分隔,只读。

$local: string 同上,服务器的地址和端口,只读。

$listener beyodListener 当前连接所属的Listener对象,只读。

$connect_at float 连接建立的时间戳

$request_at float 客户端最后一次发送数据包的时间戳。

public static $connection: Connection[] 当前所有连接对象(所有Listenner的连接),键名为连接号,值为连接对象。
如果只想列出当前侦听器中的连接,使用以下方式:

$conns= $connection->listener->connections;
foreach($conns as $id => $conn) {
    
}

方法:

getClientId setClientId($value): 获取/设置客户端标识,比如userid, device id都可以作为客户端标识使用, 一般用于客户端验证之后的状态维持。

bool send(mixed $message, bool $raw=false): 向客户端发送数据,$raw是否发送原始数据(不进行Parser::encode处理)。send发送数据前,会尝试将$message进行Parser::encode处理(除非$raw==true或没有指定Parser)成字节流,再发送给客户端。返回false说明有错误发生(连接已断开、缓存区已满)。send方法调用完毕,并不意味着数据已经到达客户端。

bool close($message=null, $raw=false): 向客户端发送消息后,断开连接。$message==null表示不发送消息而直接断开。 $raw含义同上。

bool pauseRecv(): 暂停接收客户端的消息,在需要流控的场景中很有用。

bool isPaused(): 检测是否已经暂停接收客户端消息。

resumeRecv(): 恢复接收客户端消息。

bool isClosed(): 检测当前连接是否已经断开,在群发消息时,应该作判断处理。

void attr(string $name): 获取当前连接的自定义属性值

void attr(string $name, mixed $value): 设置一个自定义属性值