@@ -132,6 +132,13 @@ defmodule LiveExWebRTC.Publisher do
132132 @ type on_recording_finished :: ( publisher_id :: String . t ( ) , Recorder . end_tracks_ok_result ( ) ->
133133 any ( ) )
134134
135+ @ typedoc """
136+ Called when recorder sends a message to the Publisher.
137+
138+ For exact meaning of the second argument, refer to `t:ExWebRTC.Recorder.message/0`.
139+ """
140+ @ type on_recorder_message :: ( publisher_id :: String . t ( ) , Recorder . message ( ) -> any ( ) )
141+
135142 @ type on_packet ::
136143 ( publisher_id :: String . t ( ) ,
137144 packet_type :: :audio | :video ,
@@ -160,6 +167,7 @@ defmodule LiveExWebRTC.Publisher do
160167 on_connected: nil ,
161168 on_disconnected: nil ,
162169 on_recording_finished: nil ,
170+ on_recorder_message: nil ,
163171 pubsub: nil ,
164172 ice_servers: nil ,
165173 ice_ip_filter: nil ,
@@ -228,6 +236,7 @@ defmodule LiveExWebRTC.Publisher do
228236 :on_connected ,
229237 :on_disconnected ,
230238 :on_recording_finished ,
239+ :on_recorder_message ,
231240 :ice_servers ,
232241 :ice_ip_filter ,
233242 :ice_port_range ,
@@ -245,6 +254,7 @@ defmodule LiveExWebRTC.Publisher do
245254 on_connected: Keyword . get ( opts , :on_connected ) ,
246255 on_disconnected: Keyword . get ( opts , :on_disconnected ) ,
247256 on_recording_finished: Keyword . get ( opts , :on_recording_finished ) ,
257+ on_recorder_message: Keyword . get ( opts , :on_recorder_message ) ,
248258 ice_servers: Keyword . get ( opts , :ice_servers , [ % { urls: "stun:stun.l.google.com:19302" } ] ) ,
249259 ice_ip_filter: Keyword . get ( opts , :ice_ip_filter ) ,
250260 ice_port_range: Keyword . get ( opts , :ice_port_range ) ,
@@ -644,6 +654,16 @@ defmodule LiveExWebRTC.Publisher do
644654 { :noreply , socket }
645655 end
646656
657+ @ impl true
658+ def handle_info (
659+ { :ex_webrtc_recorder , rec , _ } = msg ,
660+ % { assigns: % { publisher: % { recorder: rec } = pub } } = socket
661+ ) do
662+ if pub . on_recorder_message , do: pub . on_recorder_message . ( pub . id , msg )
663+
664+ { :noreply , socket }
665+ end
666+
647667 @ impl true
648668 def handle_event ( "start-streaming" , _ , socket ) do
649669 publisher = socket . assigns . publisher
0 commit comments