connection表示beyod服务器与客户端的tcp连接封装,是非常重要的概念。
属性:
$id: int 连接号,从1开始编号,只读属性,beyod使用id复用机制,即当连接断开后,其id将被后续的新连接使用,不存在id不断增长导致整数范围溢出的问题。
$peer: string 客户端的ip和端口,冒号分隔,只读。
$local: string 同上,服务器的地址和端口,只读。
$listener beyod\Listener 当前连接所属的Listener对象,只读。
$connect_at float 连接建立的时间戳
$request_at float 客户端最后一次发送数据包的时间戳。
public static $connections: Connection[] 当前所有连接对象(所有Listenner的连接),键名为连接号,值为连接对象。
如果只想列出当前侦听器中的连接,使用以下方式:
foreach($connection->listener->connections 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): 设置一个自定义属性值