iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis中如何将订阅消息发到WebSocket客户端
  • 191
分享到

Redis中如何将订阅消息发到WebSocket客户端

2024-04-02 19:04:59 191人浏览 八月长安
摘要

PHP 的Redis扩展是阻塞式 io ,使用订阅/发布模式时,会导致整个进程进入阻塞。因此必须使用Swoole\Redis异步客户端来实现。实例代码$server = new swoole_websock

PHPRedis扩展是阻塞式 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遍历服务器所有的连接,发送消息

以上就是实现从Redis中订阅消息转发到 WebSocket 客户端的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Redis中如何将订阅消息发到WebSocket客户端

本文链接: https://www.lsjlt.com/news/37330.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中如何将订阅消息发到WebSocket客户端
    PHP 的redis扩展是阻塞式 IO ,使用订阅/发布模式时,会导致整个进程进入阻塞。因此必须使用Swoole\Redis异步客户端来实现。实例代码$server = new swoole_websock...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作