Данные реального времени в Django

Я хочу наблюдать за изменениями данных в реальном времени в python, чтобы создать программу, которая показывает список онлайн друзей (т.е. каждый раз, когда друг становится онлайн или оффлайн, я хочу обновлять список). У меня есть функция, которая делает бесконечный цикл для получения данных о присутствии от сервера XMPP. Я не могу понять, как я могу получать данные в реальном времени и обновлять их. Я использую Django для бэкенда и хочу передать эти данные на веб-страницу, чтобы показать онлайн друзей. Я пробовал использовать каналы, но они не подходят для этого случая.

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock = ssl.wrap_socket(s, ssl_version=ssl. ssl.PROTOCOL_TLSv1_2)
sock.connect((hostname, port))

sock.sendall(“<presence/>”.encode())

while True:
  response = sock.recv(1024)

Как я могу передать эти результаты моему представлению страницы каждый раз, когда я получаю новое обновление внутри цикла?

Как каналы "не полезны"? С моей точки зрения, это лучший подход, который вы можете использовать. Сокеты слишком низкого уровня для использования в этом случае, я имею в виду, как вы будете использовать их в браузере. Django не поддерживает keep alive соединения; остаются каналы (websockets), которые поддерживаются JS из коробки и могут фактически сохраняться все время, пока пользователь находится в сети. Вы можете реализовать зацикленное событие в JS (со стороны пользователя), которое посылает сообщения на ваш сервер через websocket, чтобы показать, что пользователь все еще онлайн, друзья пользователя будут делиться/подписываться на его/ее канал и могут быть уведомлены о его/ее статусе онлайн. Просто мои мысли

Вернуться на верх