forked from AkkomaGang/akkoma
7d5f20b50f
This reverts commitfe7fd33126
, reversing changes made to4fabf83ad0
.
33 lines
905 B
Elixir
33 lines
905 B
Elixir
defmodule Pleroma.Web.Streamer.Ping do
|
|
use GenServer
|
|
require Logger
|
|
|
|
alias Pleroma.Web.Streamer.State
|
|
alias Pleroma.Web.Streamer.StreamerSocket
|
|
|
|
@keepalive_interval :timer.seconds(30)
|
|
|
|
def start_link(opts) do
|
|
ping_interval = Keyword.get(opts, :ping_interval, @keepalive_interval)
|
|
GenServer.start_link(__MODULE__, %{ping_interval: ping_interval}, name: __MODULE__)
|
|
end
|
|
|
|
def init(%{ping_interval: ping_interval} = args) do
|
|
Process.send_after(self(), :ping, ping_interval)
|
|
{:ok, args}
|
|
end
|
|
|
|
def handle_info(:ping, %{ping_interval: ping_interval} = state) do
|
|
State.get_sockets()
|
|
|> Map.values()
|
|
|> List.flatten()
|
|
|> Enum.each(fn %StreamerSocket{transport_pid: transport_pid} ->
|
|
Logger.debug("Sending keepalive ping")
|
|
send(transport_pid, {:text, ""})
|
|
end)
|
|
|
|
Process.send_after(self(), :ping, ping_interval)
|
|
|
|
{:noreply, state}
|
|
end
|
|
end
|