ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 官方文档: 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。 ```