首页 > 其他分享 >SSE协议及flask实现

SSE协议及flask实现

时间:2023-04-14 23:40:48浏览次数:62  
标签:协议 flask app sse Flask SSE event

介绍

服务器推送事件: Server-Sent Events, SSE

特点

  1. 仅从服务器向客户端实现单向实时通信。
  2. 实现简单,基于HTTP协议。
  3. 浏览器端有断线重连功能。
  4. 支持用户自定义消息类型。
  5. 用来传送文本, 二进制需要编码。

flask-sse 实现

flask-sse文档

前置条件

  1. 本地Redis服务器
  2. gunicorn gevent, sse是无限事件流,flask处理HTTP请求一次只能响应一个,要需要配合异步服务器使用。

实现

服务端 sse.py

from flask import Flask, render_template
from flask_sse import sse

app = Flask(__name__)
app.config["REDIS_URL"] = "redis://localhost"
app.register_blueprint(sse, url_prefix='/stream')

@app.route('/')
def index():
    return render_template("index.html")

@app.route('/hello')
def publish_hello():
    sse.publish({"message": "Hello!"}, type='greeting')
    return "Message sent!"

客户端 templates/index.html

<!DOCTYPE html>
<html>
<head>
  <title>Flask-SSE Quickstart</title>
</head>
<body>
  Flask-SSE Quickstart
  <script>
    var source = new EventSource("{{ url_for('sse.stream') }}");
    source.addEventListener('greeting', function(event) {
        var data = JSON.parse(event.data);
        console.log("The server says " + data.message);
    }, false);
    source.addEventListener('error', function(event) {
        console.log("Failed to connect to event stream. Is Redis running?");
    }, false);
  </script>
</body>
</html>

gunicorn sse:app --worker-class gevent --bind 127.0.0.1:8000 效果如下图所示: demo.gif


通过这次分析学习,了解到了Python SSE的特点与应用方式,真是太好啦。 c8e919a83f19aa615d0a24cb1e752a449561.gif

标签:协议,flask,app,sse,Flask,SSE,event
From: https://blog.51cto.com/spaceack/6191117

相关文章

  • WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱
    来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Androi......
  • WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱
    来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Androi......
  • WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱
    来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Androi......
  • 使用cups + ipp 协议client 进行网络打印处理
    实际上日常中我们已经使用了网络打印了(比如公司内部使用的共享打印机),现在大家会有使用基于部分厂商开发的的网络打印进行资料打印从技术实现上基本都是基于网络打印技术,然后通过控制程序对于打印机进行操作,然后平台会按照不同的打印模式收取不同的费用,用户可以自己去固定网点去取......
  • docker01 flask-sqlalchemy flask-migrate使用 flask项目演示 docker介绍与安装
    今日内容详细目录今日内容详细1flask-sqlalchemy使用2flask-migrate使用3flask项目演示4docker介绍4.1什么是虚拟化4.2docker是什么4.3容器与虚拟机比较4.4Docker概念5docker安装1flask-sqlalchemy使用#集成到flask中,直接使用sqlalchemy,看代码#有个第三方flask-sq......
  • cxf JaxWsProxyFactoryBean和JaxWsServerFactoryBean发布服务
    JaxWsProxyFactoryBean是客户端调用JaxWsServerFactoryBean是服务端发布项目中使用客户端调用的代码如下:publicTbuildService(Stringaddress,Longtimeout)throwsException{JaxWsProxyFactoryBeanfactory=newJaxWsProxyFactoryBean();factory.s......
  • docker-day4——Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署f
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......
  • WebAssembly初尝试
    前言之前老是听别人提到WebAssembly这个词,一直对其比较模糊,不能理解是个啥东西,后来自己实践了一下,发现其实就是一种提高代码性能的手段。简介WebAssembly是一种运行在现代网络浏览器中的新型代码,并且提供新的性能特性和效果。它设计的目的不是为了手写代码而是为诸如C、C+......
  • 计算机网络 传输层协议TCP和UDP
    目录一、传输层协议二、tcp协议介绍三、tcp报文格式四、tcp三次握手五、tcp四次挥手六、udp协议介绍七、常见协议和端口八、有限状态机  一、传输层协议传输层协议主要是TCP和UDP协议主要作用1.分段和重组2.会话多路复用 二、tcp协议......
  • 【C/C++】assert实现
     #defineMLA_ASSERT(expr)(void)((!!(expr))||(printf("mlaassertfail:\"%s\"@%s,%u",#expr,__FILENAME__,__LINE__),printf("\r\n"),abort()//usage:MLA_ASSERT(pointer!=NULL)#defineMLA_ASSERT(expr)(vo......