blob: ff258692ade71e159bd0056870fe0dcd2dc65a5d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
defmodule Octochat.Echo do
@moduledoc """
Octochat Echo server
"""
use GenServer
require Logger
def start_link(socket) do
GenServer.start_link(__MODULE__, socket)
end
def init(socket) do
:ok = :inet.setopts(socket, active: true)
{:ok, %{socket: socket}}
end
def handle_info({:tcp, _, msg}, state = %{socket: socket}) do
msg
|> String.trim()
|> String.reverse()
|> write_line!(socket)
{:noreply, state}
end
def handle_info({:tcp_closed, _}, state) do
Logger.info("#{__MODULE__}: Connection closing")
{:stop, :normal, %{}}
end
defp write_line!(line, socket) do
:gen_tcp.send(socket, line)
end
end
|