广播系统

未匹配的标注
本文档最新版为 4.0,旧版本可能放弃维护,推荐阅读最新版!

广播系统

简介

Masonite了解开发人员对构建现代Web应用程序的需求,因此Masonite 1.4+附带了WebSocket支持。有了新的服务提供商,配置文件以及对 pusherably 驱动程序的支持,现在可以快速,轻松地完美支持WebSocket。

配置

所有广播配置位于 config/broadcast.py 文件中. 只有两个选项: DRIVERDRIVERS. DRIVER 应该保存要使用的驱动程序的值 ,你想要使用,例如pusher:

DRIVER = 'pusher'

并且DRIVERS 应该配置下面的数据:

DRIVERS = {
    'pusher': {
        'app_id': os.getenv('PUSHER_APP_ID', '29382xx..'),
        'client': os.getenv('PUSHER_CLIENT', 'shS8dxx..'),
        'secret': os.getenv('PUSHER_SECRET', 'HDGdjss..'),
    },
    'ably': {
        'secret': os.getenv('ABLY_SECRET', 'api:key')
    }
}

每个驱动程序可能需要自己的单独设置值,因此请确保查看所用驱动程序的文档。对于 ablypusher 驱动程序,这些文档是您必须要了解的。

确保 DRIVER 设置中的键在 DRIVERS 设置中具有相应的键。

Pusher

如果您使用的是Pusher,则将需要安装Pusher库:

$ pip install pusher

Ably

如果您使用的是Ably,则需要安装ABLE库:

$ pip install ably

用法

由于我们有一个ServiceProvider服务提供者,负责为我们处理容器绑定,因此现在可以简单地通过将Broadcast传递到控制器方法中的参数列表中,如下所示:

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    print(broadcast) # 打印驱动类

我们也可以随时更改驱动程序:

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    print(broadcast.driver('ably')) # 打印 ably 驱动类

所有驱动都具有相同的方法,因此不必担心不同的驱动具有不同的方法。

频道

我们可以通过下面的代码,通过 WebSocket发送数据 :

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    broadcast.channel('channel_name', 'message')

像这样! 我们刚刚向订阅 channel_name频道的所有人发送了一条消息。

我们还可以发送字典:

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    broadcast.channel('channel_name', {'message': 'hello world'})

我们还可以通过添加消息渠道列表将消息发送到多个渠道:

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    broadcast.channel(['channel1', 'channel2'], {'message': 'hello world'})

这会将消息广播到两个频道。我们可以根据需要将尽可能多的频道添加到列表中.

Masonite还具有一个可选的第三个参数,即事件名称:

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    broadcast.channel('channel_name', 'message', 'subscribed')

它将把事件传递给接收WebSocket的任何人.

更改驱动

您还可以即时更改驱动:

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    broadcast.driver('ably').channel('channel_name', 'message', 'subscribed')

或者您可以显式指定类:

from masonite.drivers import BroadcastAblyDriver

from masonite import Broadcast

def show(self, broadcast: Broadcast):
    broadcast.driver(BroadcastAblyDriver).channel('channel_name', 'message', 'subscribed')

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/masonite/2.3/us...

译文地址:https://learnku.com/docs/masonite/2.3/us...

上一篇 下一篇
贡献者:3
讨论数量: 0
发起讨论 查看所有版本


暂无话题~