Где я могу хранить идентификатор темы?Как определить текущую тему?
Что касается сокета, я могу использовать:
def join("topic:" <> topic_id, _params, socket) do
...
socket= assign(socket, :topic_id, topic_id)
{:ok, socket}
end
Это было в рамках сокетов, но мои пользователи могут присоединиться к нескольким темам одновременно, а это означает, что приведенный выше код будет перекрывать topic_id каждый раз, когда новый тема присоединена, это правда?
Что делать, если я хочу знать, какой идентификатор темы активен в handle_in
?
, например:
def handle_in("new_message", params, socket) do
# what is the active topic id here?
end
Я хоть это:
def handle_in("new_message:" <> topic_id, params, socket) do
# now, I know that topic_id is the active topic
end
Есть еще один способ сделать это? или как это делается?
Спасибо, мне нужно тема ID, так как там может быть настройки, связанные тема при отправке сообщений .. Кроме того, я думал, что объект сокета находится в области канала, но затем я обнаружил, что его в области пользователя, поэтому я хотел убедиться, что я правильно понял, могут ли быть зашифрованы параметры внутри объекта сокета? – simo
На самом деле, пользователи могут присоединиться к каналам территорий, идентификатор территории будет использоваться для чтения связанного многоугольника, тогда я могу проверить, отправлено ли сообщение lat, длинное сообщение внутри или вне полигона территории. Вот пример того, зачем мне нужен идентификатор темы. – simo
Отправляйте land_id в параметры, которые вам нужны. – Gazler