概要
wsl(wsl2じゃない)で、elixirやってみた。
練習問題、やってみた。
練習問題
websocket serverで湯婆婆を返せ。
portは、50002
clientは、neosvr
写真
サンプルコード
defmodule Yubaba.Server do
alias ElixirSocketTesting.ClientAgent
def start(port \\ 50002) do
ClientAgent.start_link
server = Socket.Web.listen! port
loop(server)
end
def loop(server) do
client = server
|> Socket.Web.accept!
client
|> Socket.Web.accept!
ClientAgent.add(client)
Task.async(fn ->
recv(client)
end)
loop(server)
end
def recv(client) do
case client |> Socket.Web.recv! do
{:text, message} ->
res = Yubaba.say(message)
broadcast({:text, res})
recv(client)
{:close, _, _} ->
ClientAgent.remove(client)
other ->
IO.inspect other
end
end
def broadcast(packet) do
ClientAgent.all
|> Enum.each(fn client ->
Socket.Web.send(client, packet)
end)
end
end
以上。