I am new to Janus and getting started. Before investing too much time, I want to know if it would be easy to have what I see as a “combination” of the videocall and videoroom plugin functionality.
I need functionality to “dial”/ring other clients. The videocall plugin has an incomingcall event so clients can know when they have an incoming call. However, I also need to implement an “all-call”/broadcast from one client to many others. I see this is what the videoroom plugin is for. I need the combination where one client (e.g. an operator) would call many other clients. In the videoroom plugin, the operator can create a room, but I don’t see any way to notify a subset of clients to join that room. Like some invite event with information to join the room that has just been created.
So far I don’t see anything like that built into Janus, so I would have to built an external signaling to let clients know the room information when it becomes available. Is this a common pattern? (Janus+other signaling solution) Or is there a way to do this out of the box without developing a custom plugin?
The two plugins don’t talk to each other. If you want to use them together, any form of orchestration needs to happen at the client side, but it would still be separate plugin signalling and separate PeerConnections.
If you want to write a new plugin, check the Lua and Duktape plugins, which may make things much easier. A few years ago I made a presentation on the Lua plugin with a (probably outdated) example of a Chatroulette kind of plugin: FOSDEM 2018 - Writing a Janus plugin in Lua
Thanks for your response. I will look at the Lua plugin.
What path would you recommend to create the functionality I outlined above?
An external signaling solution seems simple enough… When I want to create a broadcast call, I create a room and then notify all the other clients with the room id via some separate solution, since there’s no way to do that with the videoroom plugin.
Another alternative is making my secondary clients poll for the existence of a predefined roomId (e.g. “broadcast”). If that room exists, then they will join it and get the broadcast audio from the operator.
Let me know if you have any suggestions, and again thank you so much for the help.