How to Create a Basic PubSub Application: Difference between revisions
From ElixirBlocks
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
==In LiveView == | |||
<source> | <source> | ||
def | def mount(_params, _session, socket) do | ||
Testbeds.subscribe() | |||
{:ok, assign(socket, testbeds: Testbeds.list_testbeds())} | |||
end | |||
def handle_info({TestBeds, [:testbed | _], _}, socket) do | |||
{:noreply, assign(socket, testbeds: TestBeds.list_testbeds())} | |||
end | |||
</source> | |||
== App/test_beds.ex == | |||
<source> | |||
@topic inspect(__MODULE__) | |||
def subscribe do | |||
Phoenix.PubSub.subscribe(App.PubSub, @topic) | |||
end | |||
defp broadcast_change({:ok, result}, event) do | |||
Phoenix.PubSub.broadcast(App.PubSub, @topic, {__MODULE__, event, result}) | |||
{:ok, result} | |||
end | end | ||
# .... | |||
def create_testbed(attrs \\ %{}) do | |||
%Testbed{} | |||
|> Testbed.changeset(attrs) | |||
|> Repo.insert() | |||
|> broadcast_change([:testbed, :created]) | |||
end | |||
</source> | </source> | ||
Revision as of 01:46, 15 June 2023
This page is in progress
In LiveView
def mount(_params, _session, socket) do
Testbeds.subscribe()
{:ok, assign(socket, testbeds: Testbeds.list_testbeds())}
end
def handle_info({TestBeds, [:testbed | _], _}, socket) do
{:noreply, assign(socket, testbeds: TestBeds.list_testbeds())}
end
App/test_beds.ex
@topic inspect(__MODULE__)
def subscribe do
Phoenix.PubSub.subscribe(App.PubSub, @topic)
end
defp broadcast_change({:ok, result}, event) do
Phoenix.PubSub.broadcast(App.PubSub, @topic, {__MODULE__, event, result})
{:ok, result}
end
# ....
def create_testbed(attrs \\ %{}) do
%Testbed{}
|> Testbed.changeset(attrs)
|> Repo.insert()
|> broadcast_change([:testbed, :created])
end