Hey, I’m still trying to figure my way around Angular 2 and Phoenix, I’ve a json resource called User, I get the users in my Angular 2 application, however I want to add a new user to the list everytime an user is inserted in the database.
I’ve created a user channel:
defmodule Kira.UserChannel do
use Kira.Web, :channel
def join("user:lobby", payload, socket) do
if authorized?(payload) do
{:ok, "Joined user:lobby", socket}
else
{:error, %{reason: "unauthorized"}}
end
end
def handle_out(event, payload, socket) do
push socket, event, payload
{:noreply, socket}
end
def broadcast_user(user) do
payload = %{
"id" => user.id,
"username" => user.username,
"name" => user.name,
"email" => user.name
}
Kira.Endpoint.broadcast("user:lobby", "user", payload)
end
defp authorized?(_payload) do
true
end
end
And everytime I create an user I broadcast it
def create(conn, %{"user" => user_params}) do
changeset = User.changeset(%User{}, user_params)
case Repo.insert(changeset) do
{:ok, user} ->
Kira.UserChannel.broadcast_user(user) # Here
conn
|> put_status(:created)
|> put_resp_header("location", user_path(conn, :show, user))
|> render("show.json", user: user)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(Kira.ChangesetView, "error.json", changeset: changeset)
end
end
What I want to know is, how to join a channel in the Angular 2 side, I’ve been trying with javascript - How to use Phoenix Channels / Sockets in an Angular 2 app? - Stack Overflow but I get this
transport: connected to wss://elixir-oxyrus.c9users.io:8082/socket/websocket?vsn=1.0.0 undefined
push: phoenix heartbeat (3) Object {}
transport: close CloseEvent {wasClean: false, code: 1006, reason: “”, type: “close”, target: WebSocket…}
Thanks for your time!