使用shup通道将通用和可扩展通道添加到管理模块。
shuup-admin-channel的Python项目详细描述
#Shup管理频道
:警告alpha版本
通知,无需重新加载页面。
安装"pip install shup admin channel"
2。将"shuup admin channel"添加到"已安装的应用程序"设置中
3。利润!这将使shuup在每个管理页面上加载脚本并连接到管理通道。
p<;shop-id>;\d+/`url模式。
这个加载项已经提供了一个js库来连接、监听和发送消息到频道。
xtheme resource injection用于将这个小库附加到每个shup管理请求。如果你不想注射,你必须黑名单"shup_admin_channel.resources:add_resources"`在你的设置中提供条目(请参见此处的操作方法)(https://shup.readthedocs.io/en/latest/ref/provides.html黑名单提供)。)
执行以下操作:
``js
///侦听"警报"命令消息
shuupadminchannel.events.on("已接收",(有效负载)=>;{
if(有效负载.command=="警报"){
messages.enqueue({
标记:有效负载.level,
text:payload.message
});
}
};
```
`payload`是通道发送的json对象。` payload.command`将包含从通道发送的命令,您可以检查是否有自定义命令。
\
消息:"员工用户您好!",
级别:"info"
};
```
这将向所有已登录的员工用户发送一条信息消息。` handler`是现有的使用者处理程序。如果不存在具有该名称的处理程序,不会执行任何操作。
我们的处理程序。
简单来说:我们基本上有两种类型的消息:
-从javascript发送到消费者的消息
-从后端发送到所有消费者(或一组消费者)的消息
其他员工用户(比如内部消息)。然后,您发送一条要广播的websocket消息,这里我们将介绍上面列出的两条可能的消息。
1。工作人员用户向频道发送消息
2。频道接收到消息并将其重新传输给所有连接的用户
现在假设您想要一个报告,该报告需要一段时间才能完成,但您不想让页面长时间加载。您可以编写使用者来处理此消息,并在报告完成时将消息发送回用户。这不需要将消息分发给其他使用者,您只需实现一个接收器处理程序即可。
只要发挥你的想象力:)
SendAlertReceiverHandler(对象):
name="send_alert"
@classmethod
异步定义句柄(cls,consumer,有效载荷:
消息=有效载荷。获取("消息")
级别=有效载荷。获取("级别")
如果没有(消息和级别):
返回
使用"handle""send""alert"类型将消息发送到房间组
waitconsumer.channel_layer.group_send(consumer.shop_room_name,{
"type":"handle_send_alert",
"message":消息,
"level":level
}
```
向管理通道的所有使用者发送消息,其中处理程序名称应为"handle\u send\u alert"。它基本上是一个消息广播器,它接收一条消息并重新传输给所有消费者。它可以直接返回某些内容给用户,但在本例中,我们将其传递给其他消费者。
\给那些信息。对于这些情况,必须实现使用者处理程序对象并将其添加到"管理通道使用者处理程序"提供的密钥中。
``py
Class OrderReceivedConsumerhandler(对象):
name="handle\u Order\u Received"
async def handle(self,有效载荷:
等待self.send(text_data=json.dumps({
"command":"alert",
"message":ugettext("收到新订单!"),
"level":"info"
})
```
当Django信号发送新订单时,将发送此特定的订单。
每个用户都连接到一个消费者,并且所有用户都将收到相同的消息。
检查[`handlers.py`](./shup-admin-u channel/handlers.py)。
\settings
-`shup-admin-u channel-order-received-u-enabled`启用/禁用新的order-received通知
-`shup-admin-u-channel-layer`-发送消息时要使用的通道层的名称
-` shup_admin_channel_settings_provider`-将向管理频道提供配置的对象。
\features
-添加通知以警告用户收到的新订单
-添加websocket命令以通过javascript
-添加一种解释频道的方法
:警告alpha版本
通知,无需重新加载页面。
安装"pip install shup admin channel"
2。将"shuup admin channel"添加到"已安装的应用程序"设置中
3。利润!这将使shuup在每个管理页面上加载脚本并连接到管理通道。
p<;shop-id>;\d+/`url模式。
这个加载项已经提供了一个js库来连接、监听和发送消息到频道。
xtheme resource injection用于将这个小库附加到每个shup管理请求。如果你不想注射,你必须黑名单"shup_admin_channel.resources:add_resources"`在你的设置中提供条目(请参见此处的操作方法)(https://shup.readthedocs.io/en/latest/ref/provides.html黑名单提供)。)
执行以下操作:
``js
///侦听"警报"命令消息
shuupadminchannel.events.on("已接收",(有效负载)=>;{
if(有效负载.command=="警报"){
messages.enqueue({
标记:有效负载.level,
text:payload.message
});
}
};
```
`payload`是通道发送的json对象。` payload.command`将包含从通道发送的命令,您可以检查是否有自定义命令。
\
消息:"员工用户您好!",
级别:"info"
};
```
这将向所有已登录的员工用户发送一条信息消息。` handler`是现有的使用者处理程序。如果不存在具有该名称的处理程序,不会执行任何操作。
我们的处理程序。
简单来说:我们基本上有两种类型的消息:
-从javascript发送到消费者的消息
-从后端发送到所有消费者(或一组消费者)的消息
其他员工用户(比如内部消息)。然后,您发送一条要广播的websocket消息,这里我们将介绍上面列出的两条可能的消息。
1。工作人员用户向频道发送消息
2。频道接收到消息并将其重新传输给所有连接的用户
现在假设您想要一个报告,该报告需要一段时间才能完成,但您不想让页面长时间加载。您可以编写使用者来处理此消息,并在报告完成时将消息发送回用户。这不需要将消息分发给其他使用者,您只需实现一个接收器处理程序即可。
只要发挥你的想象力:)
SendAlertReceiverHandler(对象):
name="send_alert"
@classmethod
异步定义句柄(cls,consumer,有效载荷:
消息=有效载荷。获取("消息")
级别=有效载荷。获取("级别")
如果没有(消息和级别):
返回
使用"handle""send""alert"类型将消息发送到房间组
waitconsumer.channel_layer.group_send(consumer.shop_room_name,{
"type":"handle_send_alert",
"message":消息,
"level":level
}
```
向管理通道的所有使用者发送消息,其中处理程序名称应为"handle\u send\u alert"。它基本上是一个消息广播器,它接收一条消息并重新传输给所有消费者。它可以直接返回某些内容给用户,但在本例中,我们将其传递给其他消费者。
\给那些信息。对于这些情况,必须实现使用者处理程序对象并将其添加到"管理通道使用者处理程序"提供的密钥中。
``py
Class OrderReceivedConsumerhandler(对象):
name="handle\u Order\u Received"
async def handle(self,有效载荷:
等待self.send(text_data=json.dumps({
"command":"alert",
"message":ugettext("收到新订单!"),
"level":"info"
})
```
当Django信号发送新订单时,将发送此特定的订单。
每个用户都连接到一个消费者,并且所有用户都将收到相同的消息。
检查[`handlers.py`](./shup-admin-u channel/handlers.py)。
\settings
-`shup-admin-u channel-order-received-u-enabled`启用/禁用新的order-received通知
-`shup-admin-u-channel-layer`-发送消息时要使用的通道层的名称
-` shup_admin_channel_settings_provider`-将向管理频道提供配置的对象。
\features
-添加通知以警告用户收到的新订单
-添加websocket命令以通过javascript
-添加一种解释频道的方法