跳转到主要内容

Flask扩展用于Pusher

项目描述

Flask-Pusher

Build Status Coverage Status

Flask扩展用于Pusher。它是对官方客户端的轻量级封装,将Flask应用绑定到Pusher客户端。

安装

从PyPI安装Flask-Pusher模块。

pip install Flask-Pusher

配置

Pusher的基本配置是app_idkeysecret。这些值可在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_iduser_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-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

这些网络钩子路由挂载在 /pusher/events/channel_existence/pusher/events/presence/pusher/events/client。配置您的 Pusher 应用以将这些网络钩子发送到这些路由。

免责声明

本项目与 Pusher 或 Flask 没有联系。

项目详情


下载文件

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

源分布

Flask-Pusher-3.0.tar.gz (6.4 kB 查看散列值)

上传时间

由以下支持