与django基于类的视图类似,Channels也提供基于类的consumers,这些consumers的类都继承自同一个类BaseConsumer。通过下面的代码可以导入该类:
from channels.generic import BaseConsumerChannels在处理每个消息时会实例化一个对象,来处理相应的消息。每个类实例都有两个属性,self.message当前处理的消息,self.kwargs定义路由时传递的参数。routings使用route_class来替换route,来实现基于类的consumers的路由。如下:
from channels import route, route_classfrom . import consumerschannel_routing = [ route_class(consumers.ChatServer, path=r"^/chat/"),] BaseConsumer所有Consumer类的基类,但是我们仍然可以直接使用它。
from channels.generic import BaseConsumerclass MyConsumer(BaseConsumer): method_mapping = { "channel.name.here": "method_name", } def method_name(self, message, **kwargs): passmethod_mapping是一个字典,定义了Channel_name到方法的路由,进入到路由的消息就会传给相应的方法来处理。
WebsocketConsumerChannels