Skip to main content

Pusher 的烧瓶扩展

项目描述

Flask-Pusher

构建状态 覆盖状态

Pusher 的烧瓶扩展。它是官方客户端的一个瘦包装器,将 Flask 应用程序绑定到 Pusher 客户端。

安装

Flask-Pusher从 PyPI安装模块。

pip install Flask-Pusher

配置

Pusher 的基本配置是app_id,keysecret。这些值在 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 配置并将客户端绑定到您的应用程序。

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

该扩展为您提供了两种访问推送客户端的方法:

# 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

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

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.

此函数必须为授权用户TrueFalse未授权用户返回。它发生在请求上下文中,因此您拥有所有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-authhttps://github.com/dirkbonhomme/pusher-js-auth`。为批处理中的每个通道调用身份验证函数。

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

推送通道数据

存在渠道需要channel_data. Flask-Pusher默认情况下 user_id使用发送socket_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 webhook

Pusher 具有用于将 websocket 事件发送到您的服务器的 webhook。

Flask-Pusher 创建路由来处理这些 webhook 并验证标头X-Pusher-KeyX-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

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

免责声明

这个项目不隶属于 Pusher 或 Flask。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

Flask-Pusher-3.0.tar.gz (6.4 kB 查看哈希)

已上传 source