首页 > 解决方案 > 如何在 django 中向消费者发送信号?

问题描述

我正在用 Django 开发 WebSocket 程序。我想接收来自客户端(ReactJS)的请求并向 WebSocket 消费者发送信号,然后 WebSocket 消费者向客户端发送消息。如何解决这样的问题?

我尝试如下。

urlpatterns = [  
    url(r'^updatesignal/$',updatesignal),  
    url(r'^stopsignal/$',stopsignal),  
]  
@api_view(['POST'])
def updatesignal(request):
    print("update")
    consumers.isconnected = 1

    return Response("update signal")

@api_view(['POST'])
def stopsignal(request):
    print("stop signal")
    consumers.isconnected = 0

    return Response("stop signal")
from channels.generic.websocket import AsyncWebsocketConsumer
import json
import asyncio

isconnected = 0
class ChatConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        print("connect")
        await self.accept()
        while isconnected == 1:
            await asyncio.sleep(2)
            print("true")
            # obj = # do_something (Ex: constantly query DB...)

            await self.send(text_data=json.dumps({
                'message': "aaa"
            }))

    async def disconnect(self, close_code):
        # Leave room group
        pass

    async def receive(self, text_data):
        # Receive message from WebSocket
        .....

但是 WebSocket 消费者在收到更新信号请求后 10 秒后被触发。如何解决这个问题呢?

标签: djangowebsocketsignals

解决方案


推荐阅读