I have two (modules) pages of code below. One named send.ex, and the other named receive.ex . I use PubSub.broadcast and PubSub.subscribe to send a message from send.ex to receive.ex . It works and does what I expect. I want to know how to rewrite it using Endpoint.subscribe and Endpoint.broadcast.
send.ex
defmodule AppWeb.SendLive do
use AppWeb, :live_view
def mount(_params, _session, socket) do
{:ok, socket}
end
def handle_event("send", %{"text" => text}, socket) do
Phoenix.PubSub.broadcast(App.PubSub, "message", {:pubsub_transmission, text})
{:noreply, socket}
end
def render(assigns) do
~H"""
<div>
<h1>Send Message</h1>
<form phx-submit="send">
<input type="text" name="text" />
<button type="submit">Send</button>
</form>
</div>
"""
end
end
received.ex
defmodule AppWeb.ReceiveLive do
use AppWeb, :live_view
def mount(_params, _session, socket) do
if connected?(socket) do
Phoenix.PubSub.subscribe(App.PubSub, "message")
end
{:ok, assign(socket, message_item: "")}
end
def handle_info({:pubsub_transmission, text}, socket) do
{:noreply, assign(socket, message_item: text)}
end
def render(assigns) do
~H"""
<div>
<h1>ChatLive</h1>
<%= @message_item %>
</div>
"""
end
end