SDRTrunk has an option for calls streaming to "send periodic keep-alive". This option is on by default with a setting of 15 minutes.
I noticed on the manage node page for my node that this option doesn't seem to update/tick the last seen timestamp. I verified this at a quiet time of night on my node where my node was last seen at 8 minutes and the keep-alive was sent by SDRTrunk.
I am guessing that this means that the keep-alive feature in SDRTrunk really doesn't do anything to let the Broadcastify system know the node is still alive even though the node hasn't sent any uploads recently.
I checked the Calls API reference and didn't see a mention of a keep-alive method in it. ( Broadcastify-Calls-API - The RadioReference Wiki )
If my assumptions are correct, maybe Broadcastify should consider doing something with keep-alives that are being sent by SDRTrunk?
Additionally maybe the Calls API could have a "heartbeat" call that gets touched when a node's streaming application is closed. That way the Broadcastify system would know to flip to a different node for the talkgroups that the exiting node was uploading. That would help "heal" the calls platform when a node stops running instead of having to wait the 15 minutes or so.
We could go further with this idea and have the heartbeat api call have 3 options, a startup for when the node is first online, a keep-alive/heartbeat to let Broadcastify know that the node is still there even though nothing has been uploaded, and a shutdown for when the node decides to stop streaming for whatever reason.
The only case for node health left is when the node's internet connection goes down. That could be solved by adding a next expected keep-alive time to the keep-alive/heartbeat call. If the node misses that keep-alive time (plus or minus 15 seconds for skew), it could then be marked as suspect. The Broadcastify system could be the one to send the next expected keep-alive time to the node software that way Broadcastify could control the frequency of the keep-alive. Shorten the time for a more active node, lengthen it for a less active node or if the Broadcastify system needs to manage traffic.
Thoughts @blantonl ?
I noticed on the manage node page for my node that this option doesn't seem to update/tick the last seen timestamp. I verified this at a quiet time of night on my node where my node was last seen at 8 minutes and the keep-alive was sent by SDRTrunk.
I am guessing that this means that the keep-alive feature in SDRTrunk really doesn't do anything to let the Broadcastify system know the node is still alive even though the node hasn't sent any uploads recently.
I checked the Calls API reference and didn't see a mention of a keep-alive method in it. ( Broadcastify-Calls-API - The RadioReference Wiki )
If my assumptions are correct, maybe Broadcastify should consider doing something with keep-alives that are being sent by SDRTrunk?
Additionally maybe the Calls API could have a "heartbeat" call that gets touched when a node's streaming application is closed. That way the Broadcastify system would know to flip to a different node for the talkgroups that the exiting node was uploading. That would help "heal" the calls platform when a node stops running instead of having to wait the 15 minutes or so.
We could go further with this idea and have the heartbeat api call have 3 options, a startup for when the node is first online, a keep-alive/heartbeat to let Broadcastify know that the node is still there even though nothing has been uploaded, and a shutdown for when the node decides to stop streaming for whatever reason.
The only case for node health left is when the node's internet connection goes down. That could be solved by adding a next expected keep-alive time to the keep-alive/heartbeat call. If the node misses that keep-alive time (plus or minus 15 seconds for skew), it could then be marked as suspect. The Broadcastify system could be the one to send the next expected keep-alive time to the node software that way Broadcastify could control the frequency of the keep-alive. Shorten the time for a more active node, lengthen it for a less active node or if the Broadcastify system needs to manage traffic.
Thoughts @blantonl ?
Last edited: