Channels ——django实时推送系统

本文详细介绍了Django Channels中基于类的Consumer,包括BaseConsumer、WebsocketConsumer、JsonWebsocketConsumer、WebsocketDemultiplexer的使用,以及如何处理session和用户、应用自定义装饰器、使用as_route方法和延迟发送消息。同时,探讨了Channels在后台任务中的应用前景。
摘要由CSDN通过智能技术生成

       一、基于类的consumer

 与django基于类的视图类似,Channels也提供基于类的consumers,这些consumers的类都继承自同一个类BaseConsumer。通过下面的代码可以导入该类:

from channels.generic import BaseConsumer

 Channels在处理每个消息时会实例化一个对象,来处理相应的消息。每个类实例都有两个属性,self.message当前处理的消息,self.kwargs定义路由时传递的参数。routings使用route_class来替换route,来实现基于类的consumers的路由。如下:

from channels import route, route_class
from . import consumers

channel_routing = [
    route_class(consumers.ChatServer, path=r"^/chat/"),
]
  • BaseConsumer

 所有Consumer类的基类,但是我们仍然可以直接使用它。

from channels.generic import BaseConsumer

class MyConsumer(BaseConsumer):

    method_mapping = {
        "channel.name.here": "method_name",
    }

    def method_name(self, message, **kwargs):
        pass

 method_mapping是一个字典,定义了Channel_name到方法的路由,进入到路由的消息就会传给相应的方法来处理。

  • WebsocketConsumer

 Channels更多的时候是用于websocket,而Channels提供了专门来处理websocket的consumers类:WebsocketConsumer。你可以像下面那样使用它:

from channels.generic.websockets import WebsocketConsumer

class MyConsumer(WebsocketConsumer):
    http_user &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值