How to Create a Basic PubSub Application
From ElixirBlocks
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