27 lines
524 B
Elixir
27 lines
524 B
Elixir
defmodule Broker do
|
|
use GenServer
|
|
|
|
def init(opts) do
|
|
{:ok, listen_socket} =
|
|
:gen_tcp.listen(opts[:port], [
|
|
:binary,
|
|
reuseaddr: true,
|
|
active: false,
|
|
backlog: 100
|
|
])
|
|
|
|
{:ok, opts}
|
|
end
|
|
|
|
defp accept_loop(listen_socket) do
|
|
case :gen_tcp.accept(listen_socket) do
|
|
{:ok, socket} ->
|
|
spawn(__MODULE__, :handle_client, [socket])
|
|
accept_loop(listen_socket)
|
|
|
|
{:error, reason} ->
|
|
IO.puts("接受連接失敗: #{reason}")
|
|
end
|
|
end
|
|
end
|