Phoenix.LiveView.Socket
Исходный кодСокет LiveView для конечных точек Phoenix.
Обычно он монтируется непосредственно в вашей конечной точке.
socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]
Чтобы использовать одно транспортное соединение совместно обычными каналами Phoenix и процессами LiveView, use Phoenix.LiveView.Socket из собственного модуля MyAppWeb.UserSocket.
Затем объявите определения channel и необязательные connect/3, а также обратные вызовы id/1 для обработки специфических для вашего канала задач, после чего смонтируйте собственный сокет в конечной точке:
socket "/live", MyAppWeb.UserSocket, websocket: [connect_info: [session: @session_options]]
Если параметры сеанса необходимо задавать во время выполнения, можно использовать кортеж MFA. Указанная в нём функция должна возвращать список ключевых слов.
socket "/live", MyAppWeb.UserSocket,
websocket: [connect_info: [session: {__MODULE__, :runtime_opts, []}]]
# ...
def runtime_opts() do
Keyword.put(@session_options, :domain, host())
end Сводка
- assigns()
Данные LiveView, хранящиеся в сокете.
- assigns_not_in_socket()
Структура, возвращаемая, когда
assignsотсутствует в сокете.
Типы
Типы
assigns()Исходный код
@type assigns() :: map() | assigns_not_in_socket()
Данные LiveView, хранящиеся в сокете.
assigns_not_in_socket()Исходный код
@opaque assigns_not_in_socket()
Структура, возвращаемая, когда assigns отсутствует в сокете.
t()Исходный код
@type t() :: %Phoenix.LiveView.Socket{
assigns: assigns(),
endpoint: module(),
host_uri: URI.t() | :not_mounted_at_router,
id: binary(),
parent_pid: nil | pid(),
private: map(),
redirected: nil | tuple(),
root_pid: pid(),
router: module(),
sticky?: term(),
transport_pid: pid() | nil,
view: module()
}
© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix-live-view.hexdocs.pm/Phoenix.LiveView.Socket.html