## 官方文档:
https://www.workerman.net/doc/gateway-worker/lib-gateway-functions.html
## Lib\Gateway类是Gateway/BusinessWorker模型中给客户端发送数据的类。
提供了单发、群发以及关闭客户端连接的接口
```
sendToClient(string $client_id, string $send_data);
向客户端client_id发送$send_data数据
$client_id
客户端连接的client_id
$send_data
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后再发送给客户端
closeClient(string $client_id);
断开与client_id对应的客户端的连接
$client_id
全局唯一标识客户端连接的id
sendToAll(string $send_data [, array $client_id_array = null [, array $exclude_client_id = null [, bool $raw = false]]]);
向所有客户端或者client_id_array指定的客户端发送$send_data数据
$send_data
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后发送给客户端
$client_id_array
指定向哪些client_id发送,如果不传递该参数,则是向所有在线客户端发送 $send_data 数据
$exclude_client_id
client_id组成的数组。$exclude_client_id数组中指定的client_id将被排除在外,不会收到本次发的消息
$raw
是否发送原始数据,一般用不到
getAllClientIdList(void);
获取全局所有在线client_id列表。
getAllClientIdCount(void);
获取当前在线连接总数(多少client_id在线)。
isOnline(string $client_id);
判断$client_id是否还在线,是否在线取决于对应client_id是否触发过onClose回调。
$client_id
客户端的client_id
返回值
在线返回1,不在线返回0
bindUid(string $client_id, mixed $uid);
将client_id与uid绑定,uid泛指用户id或者设备id,用来唯一确定一个客户端用户或者设备
$client_id
客户端的client_id
$uid
uid,可以是数字或者字符串。
uid与client_id是一对多的关系,一个uid下有多个client_id,client_id下线(连接断开)时会自动执行解绑
sendToUid(mixed $uid, string $message);
向uid绑定的所有在线client_id发送数据。
$uid
uid可以是字符串、数字、或者包含uid的数组。如果为数组,则是给数组内所有uid发送数据
$message
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后再发送给客户端
getClientIdByUid(mixed $uid);
返回一个数组,数组元素为与uid绑定的所有在线的client_id
getUidByClientId(string $client_id);
返回client_id绑定的uid,如果client_id没有绑定uid,则返回null。
unbindUid(string $client_id, mixed $uid);
将client_id与uid解绑。当client_id下线(连接断开)时会自动与uid解绑
$client_id
客户端的client_id
$uid
数字或者字符串
isUidOnline(mixed $uid);
判断$uid是否在线,如果某uid没有通过进行任何绑定,那么对该uid调用将返回0
返回值
uid在线返回1,不在线返回0
getAllUidList(void);
获取全局所有在线uid列表。
getAllUidCount(void);
获取全局所有在线uid数量。
joinGroup(string $client_id, mixed $group);
将client_id加入某个组,以便通过Gateway::sendToGroup发送数据。
$client_id
客户端的client_id
$group
只能是数字或者字符串
leaveGroup(string $client_id, mixed $group);
将client_id从某个组中删除
$client_id
客户端的client_id
$group
只能是数字或者字符串。
ungroup(mixed $group);
取消分组,或者说解散分组
sendToGroup(mixed $group, string $message [, array $exclude_client_id = null [, bool $raw = false]])
向某个分组的所有在线client_id发送数据。
$group
group可以是字符串、数字、或者数组。如果为数组,则是给数组内所有group发送数据
$message
要发送的数据(字符串类型),此数据会被Gateway所使用协议的encode方法打包后再发送给客户端
$exclude_client_id
client_id组成的数组。$exclude_client_id数组中指定的client_id将被排除在外,不会收到本次发的消息
$raw
是否发送原始数据
getAllGroupIdList(void);
获取全局所有在线group id列表。
getClientIdCountByGroup(mixed $group);
获取某分组当前在线成连接数(多少client_id在线)。
getClientIdListByGroup(mixed $group);
获取某个分组所有在线client_id列表。
getUidCountByGroup(mixed $group);
获取某个分组下的在线uid数量。
getUidListByGroup(mixed $group);
获取某个分组所有在线uid列表。
getClientSessionsByGroup(mixed $group);
获取某个分组所有在线client_id信息。
getAllClientSessions(void);
获取当前所有在线client_id信息。
setSession(string $client_id, array $session);
设置某个client_id对应的session
updateSession(string $client_id, array $session);
更新某个client_id对应的session
getSession(string $client_id);
获取某个client_id对应的session。
```
- WebSocket协议
- 构造函数(6种协议)
- count(进程设置)
- name(链接名称)
- $daemonize(守护进程设置)
- logFile(日志路径)
- stdoutFile(守护进程记录文件)
- connections(获取链接数组的)
- worker的回调属性
- worker类的方法
- Connection类的方法
- getRemotePort获取端口方法
- getRemoteIp获取IP地址
- close 安全关闭连接
- 定时器
- Channel分布式通信组件
- 心跳检测程序
- liunx优化配置
- thinkphp5.1使用worerman
- thinkphp5.1中用Channel实现广播通信
- thinkphp5.1中使用定时器
- thinkphp5.1使用TcpConnection类
- Gateway类使用
- BusinessWorker使用
- Register类的使用
- Events类使用(业务逻辑层)
- Lib\Gateway 接口(经常用)
- webman中间件stomp
- Gateway在thinkphp5.1里使用