VI
по сути, это вариант из ссылки http://derkobe.github.io/2016/01/11/get-notified-when-an-user-leaves-a-phoenix-channel.html
но переписанный с использованием Presence
Size: a a a
VI
VI
AM
VI
ML
VI
ML
ML
ML
ML
VI
VI
VI
VI
ap.keys(state.topics) |> Enum.map(&(AppWeb.Presence.list(&1))) |> Enum.filter(&(is_map(&1) && Enum.empty?(&1))) |> length
12
VI
deploy@app:log# grep hRW erlang.log.17 | tail -n5
05:48:53.741 [warn] Removing broadcast:hRW, with 0 keys
06:47:25.863 [warn] Removing broadcast:hRW, with 0 keys
06:52:31.115 [warn] Removing broadcast:hRW, with 0 keys
06:57:36.373 [warn] Removing broadcast:hRW, with 0 keys
07:03:01.241 [warn] Removing broadcast:hRW, with 0 keys
ot@app:log# grep "6M1" /var/log/nginx/access.log.1 | tail -n5то есть последний дисконнект случился 07:03:01, после этого в логах энжинэкса нет подключений
83.84.3.178 - - [11/Oct/2019:23:39:02 +0000] "GET /phoenix/socket/websocket?broadcast=hRW&subs_secret_key=6M1&subs_id=1375931&vsn=2.0.0 HTTP/1.1" 101 184 "-" "Safari/605.1.15"
83.84.3.178 - - [12/Oct/2019:01:27:15 +0000] "GET /phoenix/socket/websocket?broadcast=hRW&subs_secret_key=6M1&subs_id=1375931&vsn=2.0.0 HTTP/1.1" 101 184 "-" "Safari/605.1.15"
83.84.3.178 - - [12/Oct/2019:03:15:29 +0000] "GET /phoenix/socket/websocket?broadcast=hRW&subs_secret_key=6M1&subs_id=1375931&vsn=2.0.0 HTTP/1.1" 101 184 "-" "Safari/605.1.15"
83.84.3.178 - - [12/Oct/2019:05:03:45 +0000] "GET /phoenix/socket/websocket?broadcast=hRW&subs_secret_key=6M1&subs_id=1375931&vsn=2.0.0 HTTP/1.1" 101 184 "-" "Safari/605.1.15"
83.84.3.178 - - [12/Oct/2019:06:57:31 +0000] "GET /phoenix/socket/websocket?broadcast=hRW&subs_secret_key=6M1&subs_id=1375931&vsn=2.0.0 HTTP/1.1" 101 184 "-" "Safari/605.1.15"
VI
Removing broadcast:hRW, with 0 keys
пишет в лог вот эта функцияdefp drop_topic(state, topic) do
:ok = AppWeb.Endpoint.unsubscribe(topic)
Logger.warn("Removing #{topic}, with #{state.topics[topic]} keys")
%{state | topics: Map.delete(state.topics, topic)}
end
ML
VI
ⰿⱄ
ML