Packages
phoenix_gen_api
2.1.1
2.22.0
2.21.1
2.21.0
2.20.1
2.20.0
2.19.0
2.18.1
2.18.0
2.17.1
2.17.0
2.16.0
2.15.0
2.14.0
2.13.0
2.12.0
2.11.0
2.10.0
2.9.1
2.9.0
2.8.0
2.7.0
2.6.1
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.1
2.1.0
2.0.1
2.0.0
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.2.1
0.2.0
0.1.1
0.1.0
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
A library for fast develop APIs in Elixir cluster, using Phoenix Channels for transport data, auto pull api configs from service nodes.
Current section
Files
Jump to
Current section
Files
lib/phoenix_gen_api/helpers/channel_helpers.ex
defmodule PhoenixGenApi.ChannelHelpers do
@moduledoc """
Shared push-handling logic for GenApi WebSocket channels.
Inject into a channel with `use PhoenixGenApi.ChannelHelpers`.
Provides common `handle_info` clauses for:
- synchronous push results
- streaming responses
- async RPC call results
All three forward the payload to the client via the `"gen_api_result"` event.
"""
defmacro __using__(_opts) do
quote do
@doc false
def handle_info({:push, result}, socket) do
require Logger
Logger.debug(fn -> "#{__MODULE__}, push result: #{inspect(result)}" end)
push(socket, "gen_api_result", result)
{:noreply, socket}
end
@doc false
def handle_info({:stream_response, result}, socket) do
require Logger
Logger.debug(fn -> "#{__MODULE__}, stream response: #{inspect(result)}" end)
push(socket, "gen_api_result", result)
{:noreply, socket}
end
@doc false
def handle_info({:async_call, result}, socket) do
require Logger
Logger.debug(fn ->
"#{__MODULE__}, async call result: #{inspect(result)}"
end)
push(socket, "gen_api_result", result)
{:noreply, socket}
end
end
end
end