2016-06-08 108 views
0

我想利用handle_info跟踪参与用户的Presence,但我注意到,handle_info是从来没有所谓的,虽然用户succefully连接,并发送/收到的消息..为什么handle_info永远不会被调用?

defmodule App.UserChannel do 
    use App.Web, :channel 
    alias App.Presence 

... 
... 

def handle_info(info, socket) do 
    IO.puts info 
    IO.puts "* * * " 
    {:ok, _} = Presence.track(socket, socket.assigns.user_id, %{ 
    online_at: inspect(System.system_time(:seconds)) 
    }) 
    push socket, "presence_state", Presence.list(socket) 
    {:noreply, socket} 
end 

... 
... 

任何想法?

在服务器端,在App.UserChannel内,我怎么知道某个用户是在线还是离线?

编辑

我需要有仙丹1.3有存在的工作?我在Elixir 1.2.6上,Phoenix(1.2.0-rc.1)

回答

1

你不需要Elixir 1.3,但是在我用于DailyDrip插曲的例子中,你在其他地方引用了这个问题(https://www.dailydrip.com/topics/elixir/drips/phoenix-presence-chat)加入功能有这个:

def join("room:lobby", msg, socket) do 
    send self, {:after_join, msg} # <--- 
    {:ok, socket} 
end 

如果你没有,那就解释所提到的行为。

+0

啊!是的,'发送自我,{:after_join,msg}'丢失,谢谢 – simo

+0

你有没有试图检查一个特定的用户是否在线或不在服务器端? – simo

+0

我还没有得到这一点,不。抱歉! –

相关问题