sse服务器推送性能,SSE 服务端向客户端推送
传统的ajax都是由客户端主动去请求,服务端才可以返回数据
而sse是建立一个通道,并且在断线后自动重连,由服务端去推送,不需要客户端去主动请求,只需要建立通道
websocket是双向通信 客户端可以利用通道推送数据给服务端 服务端也可以推送数据给客户端
在有些场景,例如用户端调起支付,没有返回支付通知,需要向后端请求,获取这笔订单的支付结果
例如微信公众号内使用支付宝支付,是调不起来的,只能引导用户浏览器打开,由浏览器调起支付宝客户端进行支付
这时候微信公众号内的页面,是不知道支付结果的
常规操作是ajax 心跳查询 每隔一秒或者两秒向后端请求,获取这笔订单是否是支付成功的
但是性能很差,大量的请求,数据库压力会很大
用sse建立通道,因为这里客户端不需要向服务端推送数据 只需要获取,而且sse可以自动断线重连
服务端只需要每秒查询一次数据库,推送数据给客户端即可 但是这样性能也很差,还是要查库
最好的方法是在支付回调处,修改数据库订单状态的同时,向redis插入 例如order_pay_订单号 后端查询订单状态的时候,就无需就查库,直接去redis查询,如果有这个键,则支付成功,如果没有,则继续查询,这样查询支付结果,不需要查库操作,只需要查询redis,性能很高
客户端demo
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("./test17.php");
source.onmessage = function(res){
var data = JSON.parse(res.data);
console.log(data);
$('#result').html("
" + data.msg + "
");
};
}else{
console.log('您的浏览器不支持SSE');
}
服务端demo<?php
//设置SSE的header头部
header('X-Accel-Buffering: no');
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
ob_end_clean();//清空缓冲区并关闭输出缓冲
ob_implicit_flush(1);//每当有输出,例如echo的时候,就直接传输,不在缓冲区
//设置死循环,并sleep
while(true){
//设置要返回的数据
$data = [
"status" => 1,
"msg" => '北京时间'.date('Y-m-d H:i:s'),
];
//按规则去拼接
$str = 'id: '.time()."\n";
$str .= "event: message\n";
$str .= "data: ".json_encode($data)."\n\n";
echo $str;
sleep(1);
}
?>版权属于:本文是原创文章,版权归 吾梦小站 所有。
本站所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。
sse服务器推送性能,SSE 服务端向客户端推送相关推荐
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- netty服务器返回信息关闭,netty4 服务端同步客户端返回的结果
netty是一个异步通讯框架,在有的时候咱们想使用服务端向客户端发送消息,服务端同步等待客户端返回结果真进行下一步的业务逻辑操做.那要怎么作才能同步获取客户端返回的数据呢?这里我用到了JDK中的闭锁等 ...
- java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍
websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现. 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: 当发送私信的时候,如 ...
- eas系统服务器地址,EAS7.0EAS7.5服务端及其客户端标准配置介绍
金蝶EAS是基于JavaEE的大型企业应用.目前服务端支持以下主流软硬件环境. 适用版本:EAS7.0 EAS703 EAS7.5 1.金蝶EAS服务端支持的软硬件环境 注:标志为部署支持的环境,可以 ...
- web 服务端与客户端交互
Web server to client communication Technology 1. Traditional solution 传统模式的 Web 系统以客户端发出请求.服务器端响应的 ...
- 基于 SSE 实现服务端消息主动推送解决方案
一.SSE 服务端消息推送 SSE 是 Server-Sent Events 的简称, 是一种服务器端到客户端(浏览器)的单项消息推送.对应的浏览器端实现 Event Source 接口被制定为HTM ...
- 易语言服务端与客户端怎么传送_配置中心是怎么推送的?动手实现一个 Long Polling 长轮询...
介绍 众所周知,数据交互有两种模式:Push(推模式).Pull(拉模式). 推模式指的是客户端与服务端建立好网络长连接,服务方有相关数据,直接通过长连接通道推送到客户端.其优点是及时,一旦有数据变更 ...
- 免费开源iPhone推送消息工具+服务端-Bark
什么是Bark Bark 是一款纯推送提醒服务,主要用来给自己的 iPhone 发送自定义内容的推送,可以是文字.链接,不提供历史记录功能,阅后即焚.服务端和客户端均开源,实时性和稳定性都非常可靠,支 ...
- Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务
Asp.net webApi 通过WebSocket推送消息给客户端,搭建一个即是服务端又是客户端的服务_IT_ziliang的博客-CSDN博客 WebSocket是一种在单个TCP连接上进行全双工 ...
最新文章
- 因融资失败,应用崩溃,3 名程序员被“祭天”!
- 一些蛮好的题目,学习
- 常见Python爬虫工具总结
- 有了malloc/free,为什么还要new/delete?
- github gists_Eclipse中的Github Gists
- java—IO流——读取键盘输入的字母并转换成大写字母输出在控制台上
- 迁移到 Centos 7 遇到的一些常见问题
- 【状压dp】【POJ2288】Islands and Bridges【Hamilton路】
- java后端社招面试经历
- 锐捷网络2019年秋招售前产品经理面试总结
- java oop 题目_JavaOOP试题JavaOOP试题.doc
- java语法 chm_使用java代码打开chm格式的帮助文档
- android切换夜间模式吗,Android切换夜间模式
- 计算机考研数学和英语难吗,英语难还是数学难
- 30个不可不知的容器技术工具和资源
- 1367:查找二叉树
- 浅析copy和deepcopy
- 区块链投资700元就能赚
- 用python的tkinter做游戏(七)—— 双人射击游戏Demo(类的应用) 篇
- Transformer课程 业务对话机器人Rasa 3.x Fallback and Human Handoff