前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WorkerMan手册笔记二-TcpConnection类说明

WorkerMan手册笔记二-TcpConnection类说明

作者头像
苦咖啡
发布2018-04-28 13:53:16
8350
发布2018-04-28 13:53:16
举报
文章被收录于专栏:我的博客我的博客

一、介绍

每个客户端连接对应一个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代理非常有用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年7月4日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档