• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 实现从Redis中订阅消息转发到 WebSocket 客户端

实现从Redis中订阅消息转发到 WebSocket 客户端

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了Redis,订阅消息,消息转发,WebSocket客户端等相关知识,希望对您有所帮助

实现从Redis中订阅消息转发到 WebSocket 客户端


PHP 的redis扩展是阻塞式 IO ,使用订阅/发布模式时,会导致整个进程进入阻塞。因此必须使用Swoole\Redis异步客户端来实现。

实例代码

$server = new swoole_websocket_server("0.0.0.0", 9501);$server->on('workerStart', function ($server, $workerId) {    $client = new swoole_redis;    $client->on('message', function (swoole_redis $client, $result) use ($server) {        if ($result[0] == 'message') {            foreach($server->connections as $fd) {                $server->push($fd, $result[1]);            }        }    });    $client->connect('127.0.0.1', 6379, function (swoole_redis $client, $result) {        $client->subscribe('msg_0');    });});$server->on('open', function ($server, $request) {});$server->on('message', function (swoole_websocket_server $server, $frame) {    $server->push($frame->fd, "hello");});$server->on('close', function ($serv, $fd) {});$server->start();

实现过程

在进程启动(onWorkerStart)时创建了Swoole\Redis客户端,连接到Redis服务器

连接成功后,订阅msg_0主题的消息

当有新的message时,Swoole\Redis会触发onMessage事件回调

在这个回调函数中使用$server->connections遍历服务器所有的连接,发送消息


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 简单聊聊Redis中GETBIT和SETBIT
  • Laravel中用Observer事件致Redis队列异常问题
  • Thinkphp5+Redis实现商品秒杀代码实例讲解
  • 分享TP6框架中Redis操作服务类的记录
  • ThinkPHP5框架中Redis是如何使用和封装?
  • 关于ThinkPHP6多例Redis类实现
  • 服务器宝塔面板Redis无法随系统启动怎么办呢
  • Laravel使用redis队列实例讲解
  • Redis中热点Key是怎么产生的?如何解决?
  • thinkphp5 redis缓存新增方法实例讲解

相关文章

  • 2022-04-29如何让WordPress支持google AMP
  • 2022-04-29DEDECMS列表页分页输入数字跳转到指定分页代码
  • 2022-04-29详解Node.js Buffer的使用
  • 2022-04-29苹果cms播放器无法全屏修复方法
  • 2022-04-29CorelDraw制作金色质感小球教程
  • 2022-04-29Photoshop制作立体效果的图案艺术字
  • 2022-04-29JavaScript 如何实现横向瀑布流
  • 2022-04-29Photoshop制作中秋节飘带艺术字教程
  • 2022-04-29PhotoShop制作逼真的补丁文字效果的教程
  • 2022-04-29PHP调用实现波场交互[支持TRX/TRC20]

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 帝国CMS7.5使用TAGSID实现伪静态调用方法
    • “内容”优化影响排名 “内容”提升用户体验
    • 关键词优化原创总结
    • PS制作金属字教程
    • 微博运营商对伦敦奥运的精彩赛事的直播是广告
    • PS打造纸张撕边效果
    • 利用视频网站加快百度及谷歌的重新收录的SEO技
    • 利用CSS如何实现全兼容的毛玻璃效果?
    • 小程序如何获取input标签的值
    • Photoshop制作个性的透明玻璃效果牌

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有