我們使用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)