use Workerman\Worker;

require_once './Workerman/Autoloader.php';

// 初始化一个worker容器,监听1234端口

$worker = new Worker('websocket://workerman.net:1234');

// 进程数设置为1

$worker->count = 1;

// 新增加一个属性,用来保存uid到connection的映射

$worker->uidConnections = array();

// 当有客户端发来消息时执行的回调函数

$worker->onMessage = function($connection, $data)use($worker)

{

// 判断当前客户端是否已经验证,既是否设置了uid

if(!isset($connection->uid))

{

// 没验证的话把第一个包当做uid(这里为了方便演示,没做真正的验证)

$connection->uid = $data;

/* 保存uid到connection的映射,这样可以方便的通过uid查找connection,

* 实现针对特定uid推送数据

*/

$worker->uidConnections = $connection;

return $connection->send('login success, your uid is ' . $connection->uid);

}

// 其它罗辑,针对某个uid发送 或者 全局广播

// 假设消息格式为 uid:message 时是对 uid 发送 message

// uid 为 all 时是全局广播

list($recv_uid, $message) = explode(':', $data);

// 全局广播

if($recv_uid == 'all')

{

broadcast($message);

}

// 给特定uid发送

else

{

sendMessageByUid($recv_uid, $message);

}

};

// 当有客户端连接断开时

$worker->onClose = function($connection)use($worker)

{

global $worker;

if(isset($connection->uid))

{

// 连接断开时删除映射

unset($worker->uidConnections);

}

};

// 向所有验证的用户推送数据

function broadcast($message)

{

global $worker;

foreach($worker->uidConnections as $connection)

{

$connection->send($message);

}

}

// 针对uid推送数据

function sendMessageByUid($uid, $message)

{

global $worker;

if(isset($worker->uidConnections))

{

$connection = $worker->uidConnections;

$connection->send($message);

}

}

// 运行所有的worker(其实当前只定义了一个)

Worker::runAll();

可以针对uid推送了,虽然是单进程,但是支持个1W在线是没问题的

worker服务器推送消息,关于Worker如何向指定Client推送消息相关推荐

  1. python微信定时发消息_python实现给微信指定好友定时发送消息

    微信如何在设定时间自动发送信息给指定好友 微信没有定时发送信息的功能,但是可以借助小程序. 世界上最遥远的距离,不是生与死,而是小编就站在你面前,你却不知道小编爱你. 打开微信之后在搜索小程序中输入蜗 ...

  2. python定时发送微信消息_python实现给微信指定好友定时发送消息

    python有很多有趣的库,其中wxpy是连接微信的接口,具体可以查看官方文档.可以实现自动操作,wxpy 支持 Python 3.4-3.6,以及 2.7 版本. 一.安装 win10环境,直接在c ...

  3. worker服务器推送消息,浏览器中serviceWorker用法

    朋也的博客 » 首页 » 文章 浏览器中serviceWorker用法 作者:朋也 日期:2019-05-27 类别:javascript学习笔记 版权声明:自由转载-非商用-非衍生-保持署名(创意共 ...

  4. android推送如何推送不在线设备,推送系统从0到1(四):消息如何到达用户设备...

    本篇主要为大家揭秘推送消息是如何传输的,如何到达用户设备上的,在不同的设备上会如何展示. 在上一篇文章中,我们可以知道在建立推送任务的过程中,需要考虑带有自滤功能的用户池构建.筛选有效用户.设置推送内 ...

  5. 企业微信推送消息延迟_一种基于企业微信的消息推送方法与流程

    本发明涉及消息推送技术领域,特别涉及一种基于企业微信的消息推送方法. 背景技术: 随着微信公众号的普及,微信企业号也越来越受到人们的关注.而腾讯公司在微信企业号的基础上又进行了进一步的升级,提供了类似 ...

  6. php实现微信小程序推送,实现微信小程序模板消息不受限制、无限主动推送

    需求背景 基于微信的通知渠道,微信小程序为开发者提供了可以高效触达用户的模板消息能力,在用户本人与小程序页面有交互行为后触发,通过微信聊天列表中的服务通知可快捷进入查看消息,点击查看详情还能跳转到下发 ...

  7. Android中集成Jpush实现推送消息通知与根据别名指定推送附示例代码下载

    场景 经常会有后台服务向Android推送消息通知的情况. 实现 首先在Android Studio中新建一个Android应用 在Project根目录的build.gradle中配置了jcenter ...

  8. 微信消息推送神器【一封传话】介绍,让消息推送更简单

    背景 对于很多个人开发和企业级别的软件开发来说,经常会遇到一些消息推送的场景.如设备报警消息推送.每日天气预报和大盘资讯简报推送等,例如微信公众号消息推送.钉钉消息推送等. 这里以微信消息推送举例,原 ...

  9. 5+App使用UniPush发送消息,App在线、离线均能收到消息推送,并在通知栏进行提醒,苹果、华为、小米手机均测试通过

    [1]本文档中使用的全是逶传消息,没有使用个推的其他消息 [2]需要开通UniPush功能,并在华为.小米开发者中添加App,并开通Push权限,目前不需要上架各厂商应用市场就可以使用,后续不知道需要 ...

最新文章

  1. effective c++ 学习
  2. POJ 2785 4 Values whose Sum is 0
  3. 重启docker 服务命令
  4. 通过这个方法竟然可以看到声音传播的速度!?
  5. 基于OGG Datahub插件将Oracle数据同步上云
  6. http之SessionCookie
  7. PHP+MySql+PDO实现简单增加、删除、修改、查询
  8. Dell R410 BIOS 升级方法
  9. 网页php如何判断登录手机串号_php判断是否是手机登陆
  10. GitHub桌面版汉化
  11. STM32 复位电路设计
  12. 上传压缩包文件到Minio服务器遇到 java.io.EOFException: Truncated ZIP entry 异常
  13. linux学习资料(转帖收藏)
  14. web前端之过滤器的作用
  15. PCM与DSD究竟是什么??
  16. null underfined NaN 判断
  17. java 单体测试_单体测试指南
  18. PC端浏览器兼容性问题解决方案
  19. 卡巴斯基:2019Q3拒绝服务攻击趋势报告
  20. 服务器主板性能检测,服务器的主板性能指标

热门文章

  1. Improving Multi-hop Question Answering over Knowledge Graphs usingKnowledge Base Embeddings
  2. windows 11文件夹共享踩坑记录
  3. [技术] 使用Shader Graph着色器视图制作交互式顶点特效
  4. python的错误 File E:/Python 的代码大大/文件的读写操作.py, line 1 SyntaxError: Non-UTF-8 code starting with '\xcf
  5. 4284A安捷伦Agilent4284A精密lcr表
  6. 欢迎光临寒舍!!!本blog 正在筹建中~~~~~
  7. Minikube vs. kind vs. k3s vs k3d vs MicroK8s
  8. 折半查找判定树——(快速判断某棵树是否为折半查找判定树)
  9. 蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题
  10. Firefox浏览器——除了IE我们还有选择(转)