Как отправить сигналы потребителю в Django? - PullRequest
1 голос
/ 07 октября 2019

Я занимаюсь разработкой программ для WebSocket в Django. Я хочу получить запрос от клиента (ReactJS) и отправить сигналы потребителю WebSocket, а затем потребитель WebSocket отправляет сообщения клиенту. Как решить такую ​​проблему?

Я пробовал следующим образом.

  • urls.py
urlpatterns = [  
    url(r'^updatesignal/$',updatesignal),  
    url(r'^stopsignal/$',stopsignal),  
]  
  • views.py
@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")
  • consumer.py
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 секунд после получения запроса на обновление сигнала. Как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...