python基于flask-socketio实现WebSocket消息广播(发布订阅模式)——贰

场景

在应用中可能有一中场景,客户端A只需要发布消息,另一头多个客户端只需要接收客户端A发过来的消息,即发布订阅模式。也可用于大屏展示端,客户端只负责发布推送内容,广播接收端则进行消息接收。因此在flask应用内,通过引入flask-socketio实现站内WebSocket消息广播。各网页接收广播消息并动态刷新页面。为便于观察,我们通过向服务端发送"/push?msg=test" http 请求,触发站内广播;并通过Flask-SocketIO的广播模式,将广播信息通过WebSocket接口发送到客户端浏览器打开的网页。网页根据接收到的信息,动态展示发布者发布的内容。

参考文档

服务端程序

#!/usr/bin/env python
# encoding: utf-8
"""
@version: v1.0
@author: W_H_J
@license: Apache Licence
@contact: 415900617@qq.com
@software: PyCharm
@file: flaskIOTest.py
@time: 2019/2/20 12:04
@describe: flask-socketio 服务端
"""
import sys
import os
sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
sys.path.append("..")
from flask import Flask, re
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
你可以使用 Flask-SocketIO 库来实现Python 中使用 FlaskSocketIO 进行流式返回。以下是一个简单的示例代码: 首先,确保你已经安装了 Flask-SocketIO 库。你可以使用以下命令进行安装: ``` pip install flask-socketio ``` 然后,在你的 Flask 应用程序中导入必要的模块和类: ```python from flask import Flask, render_template from flask_socketio import SocketIO, emit app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app) ``` 接下来,定义一个路由来渲染包含 SocketIO 客户端代码的 HTML 模板: ```python @app.route('/') def index(): return render_template('index.html') ``` 在 HTML 模板中,你可以将 SocketIO 客户端代码放在合适的位置,例如在 `<head>` 标签之后: ```html <!DOCTYPE html> <html> <head> <!-- 其他头部内容 --> </head> <body> <!-- 页面主体内容 --> <script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script> <script type="text/javascript"> var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on('message', function(data) { // 处理接收到的消息 console.log(data); }); // 发送消息到服务器 socket.emit('my event', {data: 'Message from client'}); </script> </body> </html> ``` 接下来,你可以定义一个事件处理器来处理客户端发送的消息,并返回流式数据: ```python @socketio.on('my event') def handle_my_custom_event(data): # 处理接收到的消息 # 这里可以进行一些耗时的操作,然后将结果逐步返回给客户端 for i in range(10): socketio.sleep(1) # 模拟耗时操作 emit('message', 'Step {}'.format(i)) emit('message', 'Final result') ``` 最后,运行应用程序: ```python if __name__ == '__main__': socketio.run(app) ``` 现在,当你访问应用程序的首页时,它将加载包含 SocketIO 客户端代码的 HTML 模板。客户端代码将连接到服务器的 SocketIO 通道,并发送一个名为 'my event' 的事件。服务器将接收到这个事件,并通过逐步返回的方式向客户端发送消息。 请根据你的需求进行适当修改和扩展以上示例代码。希望对你有所帮助!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值