我试图在延迟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
帮帮我,谢谢你。