How to Create a Basic PubSub Application

From ElixirBlocks
Revision as of 01:46, 15 June 2023 by Admin (talk | contribs)
Jump to: navigation, search

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