Flask扩展用于Pusher
项目描述
Flask-Pusher
Flask扩展用于Pusher。它是对官方客户端的轻量级封装,将Flask应用绑定到Pusher客户端。
安装
从PyPI安装Flask-Pusher
模块。
pip install Flask-Pusher
配置
Pusher的基本配置是app_id
、key
和secret
。这些值可在Pusher网页界面中找到。
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的配置并将客户端绑定到您的应用。
from flask import Flask
from flask_pusher import Pusher
app = 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_app
client = current_app.extensions["pusher"]
# or you can get it from the extension
client = pusher.client
在两种情况下,它都是对Pusher客户端的引用。
client.trigger('channel_name', 'event', {
'message': msg,
})
请在此处查看Pusher Python客户端的文档:http://pusher.com/docs/server_api_guide#/lang=python
Pusher身份验证
Pusher有经过身份验证的私有和存在频道。Flask-Pusher
创建/pusher/auth
路由来处理它。为了支持这些经过身份验证的路由,只需用@pusher.auth
装饰一个函数。
此函数必须对授权用户返回True
,对未授权用户返回False
。它在请求上下文中发生,因此您拥有所有Flask
功能,例如,例如,对于当前的Flask-Login
用户。
将PUSHER_AUTH
配置设置为更改身份验证端点。默认值为/auth
。
from flask_login import current_user
@pusher.auth
def pusher_auth(channel_name, socket_id):
if 'foo' in channel_name:
# refuse foo channels
return False
# authorize only authenticated users
return current_user.is_authenticated()
它还透明地支持基于pusher-js-auth
的批量身份验证: https://github.com/dirkbonhomme/pusher-js-auth。身份验证函数对批量中的每个频道进行调用。
请在此处了解有关用户身份验证的更多信息:http://pusher.com/docs/authenticating_users
Pusher频道数据
存在通道需要 channel_data
。默认情况下,Flask-Pusher
会发送带有 socket_id
的 user_id
,因为这是一个必填字段。
@pusher.channel_data
提供了一种设置其他值的方法。如果返回了 user_id
键,它将覆盖默认的 user_id
。
from flask_login import current_user
@pusher.channel_data
def pusher_channel_data(channel_name, socket_id):
return {
"name": current_user.name
}
Pusher 网络钩子
Pusher 有网络钩子可以将 WebSocket 事件发送到您的服务器。
Flask-Pusher 创建路由来处理这些网络钩子并验证头 X-Pusher-Key
和 X-Pusher-Signature
。
from flask import request
@pusher.webhooks.channel_existence
def channel_existence_webhook():
print request.json
@pusher.webhooks.presence
def presence_webhook():
print request.json
@pusher.webhooks.client
def client_webhook():
print request.json
JSON 请求在 Pusher 文档中有记录:http://pusher.com/docs/webhooks
这些网络钩子路由挂载在 /pusher/events/channel_existence
、/pusher/events/presence
和 /pusher/events/client
。配置您的 Pusher 应用以将这些网络钩子发送到这些路由。
免责声明
本项目与 Pusher 或 Flask 没有联系。
项目详情
Flask-Pusher-3.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 37b60c86e698068b148042f55f03b6d50254df6a9a85af115b4d47c2913b5795 |
|
MD5 | 2411b56e51e13da53730c5543573ed8c |
|
BLAKE2b-256 | 824a257ed7602a31e36364775d9c7c4a2b4fdd3eaaf43107f7b5e4056a0dfeb4 |