defmodule ExWs do
alias ExWs.Writer
defdelegate txt(data), to: Writer
defdelegate bin(data), to: Writer
defdelegate to_binary(frame), to: Writer
def invalid_handshake(err) do
ExWs.Handshake.Errors.build(400, err)
end
def write(socket, {:framed, data}) do
:gen_tcp.send(socket, data)
end
def write(socket, data) do
write(socket, Writer.txt(data))
end
def ping(socket) do
:gen_tcp.send(socket, Writer.ping())
end
def pong(socket, data) do
:gen_tcp.send(socket, Writer.pong(data))
end
def close(socket, {:framed, data}) do
:inet.setopts(socket, send_timeout: 1_000)
:gen_tcp.send(socket, data)
:gen_tcp.close(socket)
:closed
end
def close(socket, message, code) do
close(socket, Writer.close(message, code))
end
def close(socket) do
close(socket, Writer.close(nil))
end
end