Workerman主动推送信息怎么按用户分组推送

风辰君_1039

风辰君_1039

2026-08-08

367人浏览

原创

workerman中按用户分组推送需绑定稳定业务id(如user_id)到连接实例,并在断开时清理映射;推荐用gatewayworker的joingroup/sendtogroup实现可靠分组管理,或通过channel跨进程协调。

workerman主动推送信息怎么按用户分组推送

要在Workerman中实现按用户分组推送消息,必须让服务端能识别每个连接所属的业务分组(如部门ID、项目组、聊天室ID),并确保断线重连后仍能归属原分组。纯靠connection_id无法维持分组关系,因为它是每次连接随机生成的临时标识。

绑定用户ID与连接实例

客户端首次连接成功后,立即发送包含业务唯一标识(如user_id或group_id)的登录包,服务端收到后将其与当前$connection绑定并存入全局数组。

在Worker的onMessage回调中解析JSON数据:

```php
if ($data->type === 'login' && isset($data->user_id)) {
  $uid = (int)$data->user_id;
  $this->uidConnections[$uid] = $connection;
  $connection->uid = $uid;
}

这一步必须做,否则后续无法按user_id精准触达。注意【$uid必须是整型或字符串形式的稳定业务ID,不能用session_id或token等易变值】

连接断开时清理映射关系,防止内存泄漏:

```php
$worker->onClose = function($connection) {
  if (isset($connection->uid)) {
    unset($this->uidConnections[$connection->uid]);
  }
};

使用GatewayWorker实现分组管理

GatewayWorker自带群组机制,比手动维护数组更可靠,适合中大型项目。

方法一:通过GatewayClient绑定用户到分组

在Web端完成登录后,调用PHP后端接口执行:

```php
use GatewayWorker\Lib\Gateway;
Gateway::joinGroup($client_id, $group_id);

其中$client_id由前端WebSocket连接建立后自动获得,$group_id是你业务定义的分组标识(例如“tech_department”或“project_2026_q3”)。

方法二:服务端主动触发分组推送

小红书创作服务平台
小红书创作服务平台

小红书创作服务平台是一款AI文本写作工具,一站式创作者服务工作平台。

下载

当需要向某分组广播时,在任意PHP脚本中调用:

```php
Gateway::sendToGroup($group_id, json_encode(['msg' => '任务已分配']));

【务必确认Gateway进程正在运行且group_id拼写完全一致,大小写敏感】

基于Channel实现跨进程分组推送

适用于单Worker多进程部署场景,需额外启动Channel服务协调各Worker进程间通信。

第一步:启动Channel服务端

```bash
php start.php start -d --channel

第二步:Worker进程中监听分组事件

```php
Channel\Client::on('send_to_group', function($event_data) {
  $group_id = $event_data['group_id'];
  $message = $event_data['message'];
  global $group_con_map;
  if (isset($group_con_map[$group_id])) {
    foreach ($group_con_map[$group_id] as $con) {
      $con->send($message);
    }
  }
});

第三步:客户端发指令加入分组

发送JSON:{"cmd":"add_group","group_id":"sales_team"}

第四步:业务侧触发广播

发送JSON:{"cmd":"send_to_group","group_id":"sales_team","message":"今日KPI更新"}

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

146

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

162

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

127

13

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

2026.09.21

0

12

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

2026.09.20

20

13

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

2026.09.20

0

15

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

180

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

100

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

80

23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习