This is still rough, but should be sufficient to get started on client-side work. To wit:
You can now send "block" and "unblock" signalling messages to the server, specifying a user ID you wish to block or unblock.
These manipulate the state of an in-memory database of blocks, and send an event to the target user that they have been blocked or unblocked.
When forwarding packets, we respect these blocks. No audio, video, or data will be sent from blockers to their blockees, or from blockees to their blockers.
There is a known issue with video transmission, where when a blocked video stream is unblocked Janus will interpret the gap as packet loss and start sending a ton of NACKs. I'm researching the best approach to this. It could be that we will want to advise clients to unsubscribe from media traffic of blockers or blockees. The code surrounding the block data structures is also a little messy. Other than that, things should be working.
This is still rough, but should be sufficient to get started on client-side work. To wit:
There is a known issue with video transmission, where when a blocked video stream is unblocked Janus will interpret the gap as packet loss and start sending a ton of NACKs. I'm researching the best approach to this. It could be that we will want to advise clients to unsubscribe from media traffic of blockers or blockees. The code surrounding the block data structures is also a little messy. Other than that, things should be working.