当前位置:  首页>> 技术小册>> Swoole高性能框架-SwooleWorker

基础接口

接口 参数 返回值
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的值可以为:

  • Protocol::CLIENT_INFO_REMOTE_IP 获取客户端ip
  • Protocol::CLIENT_INFO_REMOTE_PORT 客户端端口
  • Protocol::CLIENT_INFO_UID 绑定的uid
  • Protocol::CLIENT_INFO_SESSION session信息
  • Protocol::CLIENT_INFO_GROUP_LIST 加入的group列表
  • Protocol::CLIENT_INFO_SYSTEM 更多的系统信息
    可以通过|连接同时获取多个信息

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逻辑