Elixir延迟任务的Genserver

时间:2018-03-12 07:54:39

标签: erlang elixir phoenix-framework

我试图在延迟1分钟后首先向一个人的第一个朋友和其他人展示帖子,因为我正在使用genserver。

问题正在发生,第一位朋友以及其他朋友在1分钟后收到帖子。

这是我的genserver代码:

defmodule Phoenix.SchedulePost do
    use GenServer

  def start_link(state) do
    GenServer.start_link __MODULE__,state
  end

  def init(state) do
    schedule_post(state)
    {:ok, state}
  end
  #handling looby 
  def handle_info(:postSchedule,state) do
    #sending posts to others
    {:noreply,state}
  end
  #scheduling a task
  defp schedule_post(state) do
    IO.puts "scheduling the task"
    Process.send_after(self(),:postSchedule,1*60*1000)
  end
end 

我正在为每个帖子请求启动genserver进程并将其发送给第一个朋友, 这是代码:

def handle_in("post:toFrstFrnd", %{"friendId"=>friendId,"body" => body}, socket) do
    newSocket = PhoenixWeb.SocketBucket.get_socket(friendId)
    if  newSocket != nil do
      push newSocket, "post:toFrstFrnd", %{"friendId": friendId,"body": body}
    end
    Phoenix.SchedulePost.start_link(postId);
     {:noreply, socket}
end

帮帮我,谢谢你。

0 个答案:

没有答案