Revert "Merge branch 'revert-4fabf83a' into 'develop'"
[akkoma] / lib / pleroma / web / streamer / ping.ex
1 defmodule Pleroma.Web.Streamer.Ping do
2 use GenServer
3 require Logger
4
5 alias Pleroma.Web.Streamer.State
6 alias Pleroma.Web.Streamer.StreamerSocket
7
8 @keepalive_interval :timer.seconds(30)
9
10 def start_link(opts) do
11 ping_interval = Keyword.get(opts, :ping_interval, @keepalive_interval)
12 GenServer.start_link(__MODULE__, %{ping_interval: ping_interval}, name: __MODULE__)
13 end
14
15 def init(%{ping_interval: ping_interval} = args) do
16 Process.send_after(self(), :ping, ping_interval)
17 {:ok, args}
18 end
19
20 def handle_info(:ping, %{ping_interval: ping_interval} = state) do
21 State.get_sockets()
22 |> Map.values()
23 |> List.flatten()
24 |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid} ->
25 Logger.debug("Sending keepalive ping")
26 send(transport_pid, {:text, ""})
27 end)
28
29 Process.send_after(self(), :ping, ping_interval)
30
31 {:noreply, state}
32 end
33 end