Packages

SmartWebsocketClient is a (not-so) smart websocket client with pool support.

Current section

Files

Jump to
smart_websocket_client lib swc worker.ex
Raw

lib/swc/worker.ex

defmodule SmartWebsocketClient.Worker do
@moduledoc false
use GenServer
alias SmartWebsocketClient.Connection
@doc false
def start_link(args) do
GenServer.start_link(__MODULE__, args, [])
end
@doc false
def init({connection, listener}) do
# Create socket
socket = create_socket(connection)
# Launch this socket's listener
{:ok, pid} = GenServer.start_link(listener, socket, [])
listener.listen(pid)
{:ok, socket}
end
@doc false
def handle_cast({:send, msg}, socket) do
socket
|> SmartWebsocketClient.Socket.send(msg)
{:noreply, socket}
end
defp create_socket(%Connection{host: host, port: port, path: path}) do
SmartWebsocketClient.Socket.connect(host, port, path)
end
end