#django #flutter #django-channels
Вопрос:
возникли проблемы с обновлением до подключения к websocket:
запуск моего сервера на django (каналы) на
python manage.py runserver (my ip.. ):8000
и я продолжаю получать это:
WebSocket HANDSHAKING /ws/joingroup/0f248bf2-2e98-48a2-a8aa-96dece0bcff0/ WebSocket REJECT /ws/joingroup/0f248bf2-2e98-48a2-a8aa-96dece0bcff0/ WebSocket DISCONNECT /ws/joingroup/0f248bf2-2e98-48a2-a8aa-96dece0bcff0/
в flutter я использую контроллер в getx.
WebSocketChannel? channel; //initialize a websocket channel bool isWebsocketRunning = false; void startStream() async { if (isWebsocketRunning) return; //check if socket running var url = 'ws://${ip}:8000/ws/joingroup/${Get.parameters['groupid']}/'; this.channel = WebSocketChannel.connect( Uri.parse(url), //connect to a websocket ); channel!.stream.listen( (event) { print(json.decode(event)); }, onDone: () { isWebsocketRunning = false; }, onError: (error) { debugPrint('ws error $error'); } );
мой consumers.py файл на языке djagno:
class Chatconsumer(AsyncWebsocketConsumer): async def connect(self): print('hi') self.group_id = self.scope['url_route']['kwargs']['groupid'] # gets the room_name from the Urlroute. self.room_group_name = f'group {self.groupd_id}' #this sets the room_group_name (basically creates a group) await self.channel_layer.group_add( self.room_group_name, self.channel_name ) await self.accept() async def disconnect(self, close_code): # Leave room group await self.channel_layer.group_discard( self.room_group_name, self.channel_name ) #consumer receives message from websocket async def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json['message'] await self.channel_layer.group_send( self.room_group_name, { 'type': 'chat_message', 'message': message } ) async def chat_message(self, event): message = event['message'] await self.send(text_data=json.dumps({ 'message': message }))
Это проблема с flutter, и она запускается на виртуальной машине, где я не могу поддерживать соединение с веб-сайтами. Я использую слой каналов памяти. кто-то рекомендовал попробовать запустить его с помощью ngrok?
любая помощь будет признательна, спасибо.