Skip to content

关于 client_id

  • client_id 固定为 20 个字符的字符串,用来全局标记一个 socket 连接,每个客户端连接都会被分配一个全局唯一的 client_id。

  • client_id 不能自定义,由 GatewayWorker 自动生成。

  • 如果 client_id 对应的客户端连接断开了,那么这个 client_id 也就失效了。当这个客户端再次连接到 Gateway 时,将会获得一个新的 client_id。也就是说 client_id 和客户端的 socket 连接生命周期是一致的。

  • 除非 gateway 进程退出重启,否则 client_id 一旦被使用过,将不会被再次使用。也就是说 client_id 在整个 gateway 进程生命周期内是不会重复的,即使分布式部署也不会重复。

  • 业务不应该存储 client_id 到数据库或 redis 存储上,因为它是临时 id,重启 GatewayWorker 后 client_id 会重新计数,导致业务问题。

  • 推荐使用 Gateway::bindUid ($client_id, $uid) Gateway::joinGrop ($client_id, $group_id) 等接口将 client_id 绑定到 uid 或者 gid 上,通过 Gateway::sendToUid ($uid, $data) 或 Gateway::sendToGroup ($gid, $data) 来发送数据。

基于 MIT 许可发布