基础接口
接口 | 参数 | 返回值 |
---|---|---|
sendToClient | string $client, string $message | |
sendToUid | string $uid, string $message, array $without_client_list = [] | |
sendToGroup | string $group, string $message, array $without_client_list = [] | |
sendToAll | string $message, array $without_client_list = [] | |
isOnline | string $client | |
isUidOnline | string $uid | bool |
getClientListByGroup | string $group, string $prev_client = null | iterable |
getClientCount | int | |
getClientCountByGroup | string $group | int |
getClientList | string $prev_client = null | iterable |
getClientListByUid | string $uid, string $prev_client = null | iterable |
getClientInfo | string $client, int $type = 255 | array |
getUidListByGroup | string $group, bool $unique = true | iterable |
getUidList | bool $unique = true | iterable |
getUidCount | float $unique_percent = null | int |
getGroupList | bool $unique = true | iterable |
getUidCountByGroup | string $group | int |
closeClient | string $client, bool $force = false | |
bindUid | string $client, string $uid | |
unBindUid | string $client | |
joinGroup | string $client, string $group | |
leaveGroup | string $client, string $group | |
unGroup | string $group | |
setSession | string $client, array $session | |
updateSession | string $client, array $session | |
deleteSession | string $client | |
getSession | string $client | ?array |
sendToAddressListAndRecv | array $items, float $timeout = 1 | array |
sendToAddressAndRecv | array $address, string $buffer, float $timeout = 1 | string |
sendToAddress | array $address, string $buffer, $timeout = 1 |
发送消息
参数$without_client_list指的是要排除的客户端列表
获取客户端信息
通过getClientInfo接口获取,第二个参数$type的值可以为:
UID相关
一个client只能绑定一个uid,一个uid可以被多个client绑定,常见场景比如qq微信的多端登录
多次绑定以最后一次操作为准
isUidOnline指的是有任何一个绑定了指定uid的客户端在线就返回true
client断开会自动解绑uid,无需手动解绑
Group相关
一个客户端可以加入多个group,一个group可以被多个client加入,为多对多关系
client断开会自动退出已经加入的group
group无人的时候会自动删除group
getUidCountByGroup并不是一个精确数字
Session相关
每次消息事件都会得到客户端的session,无需通过getSession获取当前客户端的session,getSession通常是获取的其他客户端的session或者较长时间后session有变化重新获取。
修改session只能通过接口setSession、updateSession、deleteSession等修改。
setSession是直接赋值,updateSession是合并,内部是merge逻辑