Django Channels Channels-redis Как я могу получить доступ к базе данных redis и как я могу ее использовать?
Я впервые использовал Django Channels и впервые Redis через Channels. Я хочу использовать данные, хранящиеся в сервере redis, которые в данный момент используются django, или сохранить их в сервере redis.
При отображении чатов я хочу использовать channels_layer.receive_count, чтобы показать количество людей, обращающихся к чату (как в Twitch)
.Когда я захожу в чат, я хочу перечислить информацию о находящихся там пользователях.
Было бы здорово, если бы вы подсказали мне, как это сделать. Спасибо!
точно channels_layer.receive_count
соответствует количеству активных пользователей. Вот альтернативный вариант.
Вы можете использовать промежуточное программное обеспечение сессий Django, чтобы дать каждому пользователю уникальный session_key. Затем используйте его для создания списка active_users.
class RoomsConsumer(AsyncWebsocketConsumer):
active_users = {}
async def connect(self):
self.room_id = self.scope['url_route']['kwargs']['room_id']
self.room_group_name = 'room_%s' % self.room_id
# Add user to room count
session_key = self.scope['session'].session_key
if self.room_id not in self.active_users:
self.active_users[self.room_id] = [session_key]
elif session_key not in self.active_users[self.room_id]:
self.active_users[self.room_id].append(session_key)
# ...
async def disconnect(self, close_code):
# Remove user from room count
session_key = self.scope['session'].session_key
if self.room_id in self.active_users and \
session_key in self.active_users[self.room_id]:
# Remove my session key from the list
self.active_users[self.room_id] = list(filter(
lambda x: x != session_key,
self.active_users[self.room_id]))
Смотрите: https://github.com/ccnmtl/mathplayground/pull/270/files
user_count = len(self.active_users[room_id])
будет представлять собой количество активных пользователей в данной комнате.
В вашем представлении django вы должны убедиться, что у каждого пользователя действительно есть сессия: https://github.com/ccnmtl/mathplayground/blob/main/mathplayground/rooms/views.py#L9