Как добавить 2 конкретных людей в определенный чат, а затем перенаправить их на другую страницу в чате в каналах Django - PullRequest
0 голосов
/ 15 июня 2019

Я хочу взять любого, кто подключается к нашему серверу, и немедленно соединить его с кем-то из нашей команды и перенаправить их на уникальную страницу чата.Я не знаю, как связать их с кем-то из нашей команды и перенаправить их обоих.Я застрял на этой части.Я действительно ценю помощь.

Я пытался перенаправить со страницы потребителя, но, похоже, это не сработало, что бы я ни делал.Это дойдет до перенаправления, а затем ничего не делать.Затем я попытался закрыть сокетное соединение, а затем перенаправить их, и это тоже не сработало.Я застрял на том, как сгруппировать их и перенаправить их обоих.

consumer.py

class ChatConsumer(WebsocketConsumer):
    def connect(self):
        self.room_name = self.scope['url_route']['kwargs']['room_name']
        self.room_group_name = 'chat_%s' % self.room_name

        # Join room group
        async_to_sync(self.channel_layer.group_add)(
            self.room_group_name,
            self.channel_name
        )

        self.accept()

        # mine!

        # finds which user just connected to the websocket
        user = self.scope['user']
        print(user)
        ready.append(user)



    # trying to group person online and from our team
        # async_to_sync(self.channel_layer.group_add)(
        #     self.room_group_name,
        #     self.channel_name,
        #     ready[0],
        #     team[0],
        # )


        # trying different ways to redirect, none worked

        # self.disconnect(close_code=redirect('https://www.yahoo.com/'))
        # self.close()
        # redirecting()
        # ready.append(user)

        # print(ready[0])

        # self.disconnect(self.redirectIT('home'))
        #
        # raise channels.exceptions.StopConsumer
        # redirect('room', 'hi')
        # return redirecting()

        # self.close()
        # self.close()

Я ожидал, что это сгруппирует пользователя и кого-то из нашей командыно этого не произошло и вместо этого дал мне ошибки, что он получил больше, чем нужно аргументов.Редирект не выдавал никаких ошибок, но ничего не делал.

1 Ответ

0 голосов
/ 15 июня 2019

Вы должны делать все это в обычных представлениях django.Пользователь отправляет запрос, а вы создаете чат и добавляете в него члена команды вместе с пользователем.Затем пользователь перенаправляется на страницу чата непосредственно из представления django, обработавшего запрос.Именно когда он попадает на страницу, каналы теперь должны использоваться для отправки сообщений чата через websocket.Все до этого должно быть сделано в виде django

...