【发布时间】:2018-02-24 03:33:42
【问题描述】:
我正在制作可以发送/接收异步消息的基本 Elixir 服务器/客户端模块。该模块如下所示。
defmodule Bitcoin.WorkerOne do
use GenServer
def start_link(opts) do
IO.puts " - Worker 1 started - "
GenServer.start_link(__MODULE__,:ok, opts)
end
def set_message(server, name, mid) do
GenServer.cast(server, {:set_message, name})
end
#callbacks
def init(:ok) do
names = []
{:ok, names}
end
def handle_cast({:set_message, name},names) do
IO.puts "- new state is - "
names = names ++name
IO.inspect names
{:noreply,names}
end
end
我正在使用 iex 控制台启动进程。
{:ok, pid1} = Bitcoin.WorkerOne.start_link([])
Bitcoin.WorkerOne.get_message(pid1, ["one"])
在上述之后,状态变为 ['one'] (最初为空列表)。我想向服务器发送状态已更新的通知。我可以在handle_cast 中调用'Genserver.cast' 以发回消息吗?
【问题讨论】:
标签: elixir actor gen-server