
Hi,
Thanks for the reply. After reading it I think publish/subscribe might actually fit our use case, since we're more of a Push-to-Talk (just like a Walkie-Talkie) and not a conference call.
We have a custom B2BUA between Kamailio and the clients. Each client affiliates to a group channel by sending an INVITE to a group URI, and the B2BUA controls rtpengine via the ng protocol. The idea is:
For floor requests we were thinking of having the listener send a re-INVITE of sorts (perhaps a SIP INFO?) with a custom header as a lightweight signal to the B2BUA, though we're not sure if that's the right place to hook into this or if there's a more natural way
Since only one person sends RTP at a time, the one-way limitation shouldn't matter. Before we go further though, a few things we're unsure about:
Since only one person sends RTP at a time, the one-way limitation shouldn't matter. Before we go further though, a few things we're unsure about:
- Is ng offer without ng answer a stable session state, or does rtpengine expect an answer before it considers the session usable?
It is not. Every offer needs an answer. In fact this:
- Each client M affiliates via INVITE. The SIP AS sends ng offer(call_id=M, from_tag=M, sdp=SDP_M) and gets back a relay_SDP_M, which is returned to M in the 200 OK
is not a valid use of "offer." The SDP that is returned from an "offer" is not an answer SDP that can be sent back to the offerer as a reply. The returned SDP is still an offer SDP, that is supposed to be sent to a B party which then produces the answer.
You probably want to use "publish" for this, which does return an answer SDP. (There's a patch to support bidirectional/sendrecv "publish" pending to be submitted to git, if that's needed.)
- In subscribe_request, should sdp be the client's original SDP or the relay_SDP returned by the offer?
There's no input SDP to a subscribe request, and the output SDP that is returned is an offer SDP that can be given to a listener. It's a reflection of what is being subscribed to, and generally corresponds to the receive direction (i.e. the received offer SDP from an offer or a publish).
The answer SDP returned by the listener is then used as input to the subscribe answer.
- Any known issues with N active subscriptions pointing at the same source session?
No, in fact that is explicitly what it was designed to do.
Cheers