WorkerMan手册笔记二-TcpConnection类说明

2018-04-28 13:53:16 浏览数 (2)

一、介绍

每个客户端连接对应一个Connection对象,可以设置对象的onMessage、onClose等回调,同时提供了向客户端发送数据send接口与关闭连接close接口,以及其它一些必要的接口。

可以说Worker是一个监听容器,负责接受客户端连接,并把连接包装成connection对象式提供给开发者操作。

二、属性

名称

说明

int Connection::$id

连接的id。这是一个自增的整数。 注意:workerman是多进程的,每个进程内部会维护一个自增的connection id,所以多个进程之间的connecion id会有重复。 如果想要不重复的connection id 可以根据需要给connection->id重新赋值,例如加上worker->id前缀。

string Connection::$protocol

设置当前连接的协议类

Worker Connection::$worker

此属性为只读属性,即当前connection对象所属的worker实例

int Connection::$maxSendBufferSize

此属性用来设置当前连接的应用层发送缓冲区大小。不设置默认为Connection::$defaultMaxSendBufferSize(1MB)。Connection::$maxSendBufferSize 和 Connection::$defaultMaxSendBufferSize均可以动态设置。 此属性影响onBufferFull回调

static int Connection::$defaultMaxSendBufferSize

此属性为全局静态属性,用来设置所有连接的默认应用层发送缓冲区大小。不设置默认为1MB。 Connection::$defaultMaxSendBufferSize可以动态设置,设置后只对之后产生的新连接有效

static int Connection::$maxPackageSize

此属性为全局静态属性,用来设置每个连接能够接收的最大包包长。不设置默认为10MB。

三、回调属性

名称

说明

callback Connection::$onMessage

作用与Worker::$onMessage回调相同,区别是只针对当前连接有效,也就是可以针对某个连接的设置onMessage回调。

callback Connection::$onClose

此回调与Worker::$onClose回调作用相同,区别是只针对当前连接有效,也就是可以针对某个连接的设置onClose回调

callback Connection::$onBufferFull

作用与Worker::$onBufferFull回调相同,区别是只针对当前连接起作用,即可以单独设置某个连接的onBufferFull回调

callback Connection::$onBufferDrain

作用与Worker::$onBufferDrain回调相同,区别是只针对当前连接起作用,即可以单独设置某个连接的onBufferDrain回调

callback Connection::$onError

作用与Worker::$onError回调相同,区别是只针对当前连接起作用,即可以单独设置某个连接的onError回调

四、接口

名称

参数

返回值

说明

mixed Connection::send(mixed $data [,$raw = false])

$data 要发的数据 $row 是否发原始数据

true 表示发送成功 null 表示放入待发送队列,等待异步发送 false 表示发送失败,失败原因可能是客户端连接已经关闭,或者该连接的应用层发送缓冲区已满

向客户端发送数据

string Connection::getRemoteIp()

String

获得该连接的客户端ip

int Connection::getRemotePort()

获得该连接的客户端端口

void Connection::close(mixed $data = ”)

$data   可选参数,要发送的数据(如果有指定协议,则会自动调用协议的encode方法打包$data数据),当数据发送完毕后关闭连接,随后会触发onClose回调

调用close会等待发送缓冲区的数据发送完毕后才关闭连接,并触发连接的onClose回调

void Connection::destroy()

与close不同之处是,调用destroy后即使该连接的发送缓冲区还有数据未发送到对端,连接也会立刻被关闭,并立刻触发该连接的onClose回调。

void Connection::pauseRecv(void)

使当前连接停止接收数据。该连接的onMessage回调将不会被触发。此方法对于上传流量控制非常有用

void Connection::resumeRecv(void)

使当前连接继续接收数据。此方法与Connection::pauseRecv配合使用,对于上传流量控制非常有用

void Connection::pipe(TcpConnection $target_connection)

将当前连接的数据流导入到目标连接。内置了流量控制。此方法做TCP代理非常有用

0 人点赞