PHP swoole实现redis订阅和发布
前戏:实现用户下单,服务器通知后台接收订单...类似美团外卖
1.首先要实现一个订阅程序
$result = $client->connect('127.0.0.1', 6379, function (swoole_redis  $client, $result) {
		$client->subscribe('order');    //实现订阅order
	});
2.客户下单会产生一个publish推送到订阅order中
3.websocket推送
$client->on('message', function (swoole_redis $client, $result) use ($server,$request) {
		if ($result[0] == 'message'){
			$server->push($request->fd, $result[2]);
		}
	});
完整代码
<?php
$server = new swoole_websocket_server("0.0.0.0", 9533);
$server->on('open', function ($server, $request) {
	$client = new swoole_redis;
	$client->on('message', function (swoole_redis $client, $result) use ($server,$request) {
		if ($result[0] == 'message'){
			$server->push($request->fd, $result[2]);
		}
	});
	$result = $client->connect('127.0.0.1', 6379, function (swoole_redis  $client, $result) {
		$client->subscribe('order');    //实现订阅order
	});
});
$server->on('message', function (swoole_websocket_server $server, $frame) {
	$server->push($frame->fd, "areyouok");
});
$server->on('close', function ($serv, $fd) {
	//处理关闭
});
$server->start();
PHP swoole实现redis订阅和发布的更多相关文章
- Redis订阅和发布模式和Redis事务
		-------------------Redis订阅和发布模式------------------- 1.概念 Redis 发布订阅(pub/sub)是一种消息通信模式: 发送者(pu ... 
- redis订阅与发布系统
		一.概述 1.redis通过publish.subscribe等命令实现了订阅与发布模式. 2.这个功能提供两种信息机制,分别是订阅/发布到频道和订阅/发布到模式. 二.频道的订阅与信息发送 1.re ... 
- redis 订阅与发布
		PUBLISH,SUBSCRIBE,等命令实现订阅与发布 订阅/发布到频道 订阅/发布到模式 频道的订阅与信息发送 订阅subscribe,可以让客户端订阅任意数量的频道, 每当有新信息发送到 ... 
- Redis订阅与发布
		发布与订阅模型在许多编程语言中都有实现,也就是我们经常说的设计模式中的一种--观察者模式.在一些应用场合,例如发送方并不是以固定频率发送消息,如果接收方频繁去咨询发送方,这种操作无疑是很麻烦并且不友好 ... 
- redis订阅与发布(把redis作为消息中间件)
		订阅频道127.0.0.1:6379> subscribe chat1Reading messages... (press Ctrl-C to quit)1) "subscribe&q ... 
- 上下文管理、线程池、redis订阅和发布
		一:上下文管理: 对于一些对象在使用之后,需要关闭操作的.比如说:socket.mysql数据库连接.文件句柄等. 都可以用上下文来管理. 语法结构: Typical usage: @contextm ... 
- Redis 订阅发布 - Jedis实现
		Redis 订阅发布 - Jedis实现 我想到使用Redis的订阅发布模式是用来解决推送问题的-. 对于概念性的叙述,多多少少还是要提一下的:  什么是Redis发布订阅?Redis发布订阅是一种 ... 
- 15天玩转redis —— 第九篇 发布/订阅模式
		本系列已经过半了,这一篇我们来看看redis好玩的发布订阅模式,其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子 就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果 ... 
- ServiceStack.Redis订阅发布服务的调用(Z)
		1.Redis订阅发布介绍Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式.发布者和订阅者之间使用频 ... 
随机推荐
- CentOS系统Nginx安装配置,随时更新
			./configure --prefix=/etc/nginx \ #指定安装目录 --sbin-path=/usr/sbin/nginx \ #指定执行路径--conf-path=/etc/ngin ... 
- ip代理简单方法
			requests.post(url-url,headers=headers,data=data,proxies={'https':'192.165.1.56:8000'} 
- 多渠道打包如何运行/debug指定的渠道
			如果配置了多渠道,像这里有3个,分别为flavor1,flavor2,flavor3 productFlavors { flavor1{ packageName "com.xxx.yymad ... 
- dubbo could not get local host ip address will use 127.0.0.1 instead 异常处理
			dubbo could not get local host ip address will use 127.0.0.1 instead 查看hostname localhost:spring wls ... 
- 神州数码策略路由(PBR)配置
			实验要求:掌握PBR配置的方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip address ... 
- jquery 上滑加载更多
			$(document).ready(function() { var totalPage = {$totalPage};//总页数 var page = {$page}; //起始页 var page ... 
- MySQL中MyISAM与InnoDB的主要区别对比
			特征 MyISAM InnoDB 聚集索引 否 是 压缩数据 是(仅当使用压缩行格式时才支持压缩MyISAM表.使用压缩行格式和MyISAM的表是只读的.) 是 数据缓存 否 是 加密数据 是(通过加 ... 
- 双十一LoanMarket压力测试报告
			测试背景 评估服务器资源及几个重要接口的并发性能. 测试需求 由开发提供的5个重要接口: 业务场景 URL 访问量(万) TPS 请求比例(%) 随手借点-首页产品接口 /suishoujiedian ... 
- ubuntu18.04 下利用conda安装opencv3
			ubuntu18.04 下利用conda安装opencv3 安装opencv3 conda install -c https://conda.anaconda.org/menpo opencv3 出现 ... 
- python基础(九)
			一.私有 class DB: port = 3306 #类变量 def __init__(self): self.host = '127.0.0.1' self.__user = 'root' #实例 ... 
