推进器的烧瓶延伸

Flask-Pusher的Python项目详细描述


烧瓶推进器

Build StatusCoverage Status

推进器的烧瓶延伸部分。它是官方客户机的一个薄包装, 将烧瓶应用程序绑定到推送客户端。

安装

从pypi安装Flask-Pusher模块。

pip install Flask-Pusher

配置

pusher的基本配置是app_idkeysecret。这些值在pusher web界面中可用。

PUSHER_APP_ID='your-pusher-app-id'PUSHER_KEY='your-pusher-key'PUSHER_SECRET='your-pusher-secret'

您可以使用以下配置连接到自定义主机/端口:

PUSHER_HOST='api.pusherapp.com'PUSHER_PORT='80'

扩展自动配置pusher编码器以使用app.json_encoder

用法

此扩展简化了pusher配置并将客户端绑定到应用程序。

fromflaskimportFlaskfromflask_pusherimportPusherapp=Flask(__name__)pusher=Pusher(app)# Use pusher = Pusher(app, url_prefix="/yourpath") to mount the plugin in another path

扩展提供了两种访问pusher客户端的方法:

# you can just get the client from current_appclient=current_app.extensions["pusher"]# or you can get it from the extensionclient=pusher.client

在这两种情况下,它都是对推送客户机的引用。

client.trigger('channel_name', 'event', {
    'message': msg,
})

在这里检查pusher python客户端的文档:http://pusher.com/docs/server_api_guide#/lang=python

推送器验证

pusher已经验证了私有和存在通道。Flask-Pusher创建 处理它的/pusher/auth路由。为了支持这些经过身份验证的路由, 只需用@pusher.auth来修饰函数。

此函数必须返回True表示已授权,返回False表示未授权 用户。它发生在请求上下文中,因此您拥有所有的Flask功能, 包括例如Flask-Login当前用户。

设置PUSHER_AUTH配置以更改身份验证终结点。默认值是/auth

fromflask_loginimportcurrent_user@pusher.authdefpusher_auth(channel_name,socket_id):if'foo'inchannel_name:# refuse foo channelsreturnFalse# authorize only authenticated usersreturncurrent_user.is_authenticated()

它还透明地支持基于pusher-js-authhttps://github.com/dirkbonhomme/pusher-js-auth`的批处理身份验证。对批处理中的每个通道调用身份验证函数。

在此处阅读有关用户身份验证的详细信息:http://pusher.com/docs/authenticating_users

推进器通道数据

状态通道需要channel_dataFlask-Pusher默认情况下发送 user_id使用socket_id,因为它是一个必需字段。

@pusher.channel_data提供了一种设置其他值的方法。如果user_id 键被返回,它覆盖默认的user_id

fromflask_loginimportcurrent_user@pusher.channel_datadefpusher_channel_data(channel_name,socket_id):return{"name":current_user.name}

推杆网钩

pusher有webhook来向服务器发送websocket事件。

烧瓶推进器创建处理这些webhook的路由,并验证头X-Pusher-KeyX-Pusher-Signature

fromflaskimportrequest@pusher.webhooks.channel_existencedefchannel_existence_webhook():printrequest.json@pusher.webhooks.presencedefpresence_webhook():printrequest.json@pusher.webhooks.clientdefclient_webhook():printrequest.json

json请求记录在pusher文档中:http://pusher.com/docs/webhooks

这些webhook路由安装在/pusher/events/channel_existence/pusher/events/presence/pusher/events/client中。配置您的Pusher应用程序以将Webhook发送到这些路由。

免责声明

本项目不隶属于推进器或烧瓶。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java部署在根文件夹中eclipse中的Tomcat上   java jspuseBean类属性无效   可以读取正在运行的java应用程序的内存吗?   使用parthandler在Mpart中加载java e4表   java Spring测试服务类模拟实用程序类Junit和Mockito   java如何解决当我的查询只是选择JQPL值时的插入错误   java缓冲编写器偶尔会创建符号而不是数字   java为什么Eclipse/GTK包不能在Ubuntu20上运行。04比WSL1高?   为什么在我尝试用Java填充数组时,函数会存储零?   变量的类初始化不起作用(Java类)   java类型ListViewFragment的findViewById(int)方法未定义   java我无法使用SeleniumWebDriver迭代webtable中的数据   在JPA/Hibernate的多对多映射中添加(fetch=FetchType.EAGER)后出现java问题   java是否可以在安卓推送通知中添加视频?   java使用weka PCA处理数据   用Java读取用户输入   java Play framework 2.2.1 HTTPs在尝试连接时失败   正则表达式在中的性能。NET vs Java