WebSocket-подобная группировка для событий, отправленных сервером, в Django

У меня есть сайт Django, и на нем есть "игра" в реальном времени. Несколько человек подключаются и играют в нее.

<<<Каждые

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

Я подумываю о переходе на Server Sent Events. Я немного использовал его и читал о нем в Интернете и решил, что он хорошо подойдет для моего проекта (использую его вместо WS).

"Проблема", которая у меня есть, заключается в том, что я не уверен, как (я предполагаю, что это возможно) использовать что-то вроде групп в ws. Я искал в Интернете, и лучшее решение, которое я смог найти, - это фильтрация на стороне клиента, что, хотя это совершенно нормально, я не предпочитаю, поскольку считаю это пустой тратой ресурсов.

Я настроил это так, что на основе url для игры, пользователи, которые подключаются, помещаются в определенную группу (я использую channels и redis) и получают данные только для этой группы, и я хотел бы сохранить это таким образом.

С помощью простой функции: send_event('test', 'message', {'data': 'text'}) я могу отправить данные на определенный канал (группа: test).

Установка для этого выглядит следующим образом:

'http': URLRouter([
    url(r'^events/', AuthMiddlewareStack(
        URLRouter(django_eventstream.routing.urlpatterns)
    ), { 'channels': ['test'] }),
    url(r'', get_asgi_application()),
])

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

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

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

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