为了账号安全,请及时绑定邮箱和手机立即绑定

带有 Django 通道的恒定数据流

带有 Django 通道的恒定数据流

交互式爱情 2021-10-26 18:41:34
我正在努力熟悉Django channels和web-sockets。我有一个任务 - 不断地向连接到频道的任何人流式传输数据。目前,这是来自官方教程的一段代码,有一些改进。class ChatConsumer(AsyncWebsocketConsumer):    async def connect(self):        self.room_name = self.scope['url_route']['kwargs']['room_name']        self.room_group_name = f'chat_{self.room_name}'        if not hasattr(self, 'vehicle'):            # this produses constant data stream            self.vehicle = connect('/dev/ttyACM0', wait_ready=True, rate=4)        await self.channel_layer.group_add(            self.room_group_name,            self.channel_name        )        await self.accept()        # this part does not work!        await self.send(text_data=json.dumps({            'message': {                        'mess': "Hi",                        'yaw': self.vehicle._yaw,                        'pitch': self.vehicle._pitch,                        'roll': self.vehicle._roll,                       }        }))    async def disconnect(self, close_code):        # Leave room group        await self.channel_layer.group_discard(            self.room_group_name,            self.channel_name        )但是现在这段代码断开连接,前面没有显示任何内容。我找到了这个答案,但那个循环也不起作用。如果我将 while 循环移动到单独的方法并从receive方法中调用它(我现在不会在这里简短地展示) - 它可以工作,但是当新用户进入频道时,他看不到来自while 循环。但是在重新启动循环后,消息会发送给所有用户。如何让所有用户在任何时候进入频道时都可以使用数据流?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信