flask项目通过Server Send Event 向前端推送数据

最近公司在用flask开发一个告警系统,公司有一个需求:如果后台通过socke接收到来自ips网络设备的syslog日志则需要向前端浏览器推送一条信息,然后前端判断信息状态是否发出告警声音,后端是这样实现的:每收到一条来自安全设备的syslog日志则向redis中的列表类型的warning 中rpush一条数据,服务器端向浏览器推送数据我采用的是Server Send Event,简称SSE,sse是单向通道,只能服务器向浏览器推送数据,它比较轻量极,使用简单。推送的思路  如下:

1,浏览器向服务器发送一次sse请求,这样服务器就能知道它要向哪推送数据,使浏览器和服务器保持通信连接状态

前端代码如下:

var source = new EventSource('/stream2');
            source.onmessage = function(e) {
                var ndata = JSON.parse(e.data);
                console.log(ndata);
                console.log(ndata.alert_data);
                console.log(JSON.parse(ndata.alert_data));
                console.log(JSON.parse(ndata.alert_data).wuli_addr);
                if(ndata.state === 1){
                     shengyin();  //告警声音
                     sendem
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flask是一种轻量级的Python Web框架,可用于构建Web应用程序。Flask提供了一个方便的方法,使得向前端传输数据变得容易。通过使用Flask框架的模板引擎,可以在服务器端生成HTML页面,并将数据嵌入到HTML中。 为了向前端传输数据,需要在Flask应用程序中定义一个路由,并在该路由中渲染需要的数据。渲染数据的方法有很多种,可以使用Flask提供的模板引擎,如Jinja2,也可以直接返回JSON格式的数据。下面是一个使用Jinja2模板引擎的示例: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): data = {'name': 'Tom', 'age': 23} # 定义需要传输的数据 return render_template('index.html', data=data) # 渲染模板并返回HTML页面 if __name__ == '__main__': app.run() ``` 在上面的示例中,定义了一个路由“/”,当用户访问这个地址时会调用index函数。该函数定义了一个字典data用于传输数据,然后通过render_template()方法将数据渲染到模板“index.html”中,并将渲染后的HTML页面返回给用户。 在模板“index.html”中,可以通过Flask提供的模板语言,如{{ data.name }}和{{ data.age }},来访问数据并将其显示在页面上。 除了Jinja2模板引擎外,Flask还提供了许多方便的工具,如Flask-RESTful和Flask-SocketIO,可用于构建Web API和实时应用程序。在使用这些工具时,将数据传输到前端也非常容易,只需要定义相应的路由和数据格式即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值