Сохранение данных по конкретным темам для канала Phoenix

Учитывая Channel, у которого есть несколько пользователей, подключенных к определенной теме, скажем, "rooms:lobby", я хотел бы иметь возможность хранить информацию, связанную с каналом, которую я мог бы получать и, возможно, обновлять каждый раз, когда приходит новое сообщение. В некотором смысле, я хочу, чтобы каждая тема была отдельной GenServer-like вещью.

Насколько я могу судить, Phoenix.Socket.assign/3 хранит информацию, локальную для каждого пользователя, и поэтому не будет работать.


person Havvy    schedule 31.08.2015    source источник
comment
Я не могу точно сказать @Havvy, но я думаю, что вы смешиваете пару разных концепций. Я думаю, что Channel — это концепция Phoenix, где комнаты — это что-то конкретное для вашего чат-приложения. Может быть, перефразировать ваш вопрос? Это немного сбивает с толку в том виде, в каком оно есть сейчас.   -  person Onorio Catenacci    schedule 01.09.2015
comment
Да, почитав справочную документацию еще немного, я вижу, что это называется «тема», а не комната. Я обновлю вопрос, чтобы использовать правильную терминологию.   -  person Havvy    schedule 02.09.2015
comment
Вы хотите сохранить информацию только в памяти или сохранить ее? Какие данные, например целые разговоры или «мета-данные» о количестве событий/времени/и т. д.?   -  person The Brofessor    schedule 04.09.2015
comment
Я думаю, что понимаю вопрос @Havvy, и он может показаться таким: если Phoenix позволит вам сделать def join("room:" <> roomid, _params, socket) do, как мне получить доступ к roomid в handle_in или handle_out, например.   -  person Jean-Pierre Bécotte    schedule 22.02.2018


Ответы (1)


Я до сих пор не могу понять, о чем вы спрашиваете, но на вашем месте я бы посмотрел на использование Агенты Эликсира, чтобы попытаться сделать то, что делаете вы. Я бы опубликовал ту часть документа Агентов, которую я просматриваю, но, как я уже сказал, я все равно не уверен, что правильно понимаю ваш вопрос.

person Onorio Catenacci    schedule 02.09.2015
comment
Я собираюсь проголосовать за это, потому что в конечном итоге это то, что я сделал, но на самом деле это не /использование/ Феникса, а просто добавление чего-то, чего, кажется, там нет. - person Havvy; 06.09.2015