{:ok, []}
end
+ def handle_info(messages, state) when is_list(messages) do
+ Enum.each(messages, fn {e, to} -> send(to, e) end)
+ {:noreply, state}
+ end
+
def handle_info({e, to}, state) do
send(to, e)
{:noreply, state}
subs = RealmSession.subscriptions(db, realm, topic)
details = Map.put_new(opts, "topic", topic)
- # {%Event{
- # subscription_id: id,
- # publication_id: pub_id,
- # arg_list: arg_l,
- # arg_kw: arg_kw,
- # details: details
- # }, pid}
- Enum.each(subs, fn {id, {pid, node}} ->
- send(
- {proxy, node},
- {{:event, id, pub_id, arg_l, arg_kw, details}, pid}
- )
+
+ groups =
+ Enum.reduce(subs, %{}, fn {id, {pid, node}}, acc ->
+ event = {{:event, id, pub_id, arg_l, arg_kw, details}, pid}
+ Map.update(acc, node, [event], &[event | &1])
+ end)
+
+ Enum.each(groups, fn {node, messages} ->
+ send({proxy, node}, messages)
end)
case opts do