我们使用python的channels库来使用Websocket
HTTP接收数据:
class MessageConsumer(generic_http.AsyncHttpConsumer):
async def handle(self, message):
# handle the message
await channel_layer.group_send(
group_name,
{
'type': 'handle_message',
'message': message,
}
)
Channels使用Websocket推送数据:
class MessagePublisher(websocket.AsyncWebsocketConsumer):
def __init__(self, *args, **kwargs):
pass
async def connect(self):
await self.accept()
await self.channel_layer.group_add(
self.group_name,
self.channel_name, # 这是已有的
)
async def disconnect(self):
await self.channel_layer.group_discard(
self.group_name,
self.channel_name, # 这是已有的
)
async def handle_message(self, event):
message = event['message']
await self.send(text_data=message)