如何将2个特定的人添加到特定的聊天中,然后将其重定向到Django频道中的聊天中的另一个页面

时间:2019-06-14 23:46:31

标签: python django python-3.x django-channels channels

我想带任何人连接到我们的服务器,并立即将他们与我们团队中的某个人连接,然后将他们两个都重定向到唯一的聊天页面。我不知道如何将他们与我们团队中的某人联系起来,并重定向他们两个。我被困在那部分。 我非常感谢您的帮助。

我尝试从使用者页面重定向,但无论如何似乎都行不通。它会转到重定向,然后什么也不做。然后,我尝试关闭套接字连接,然后重定向它们,但也没有用。 我对如何对它们进行分组并同时重定向它们都感到困惑。

consumers.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 :(得分:0)

您应该在普通的django视图中执行所有操作。用户发送一个请求,您创建一个聊天,并与该用户一起添加一个团队成员。然后,直接从处理请求的django视图将用户重定向到聊天页面。当他进入页面时,现在应该使用频道通过websocket发送聊天消息。之前的所有操作都应在Django视图中完成