public void Register(MediaServerSignaler signaller)
 {
     lock (signallers)
     {
         signallers.Add(signaller);
     }
 }
 public void Unregister(MediaServerSignaler signaller)
 {
     lock (signallers)
     {
         signallers.Remove(signaller);
     }
 }
        private async Task EstablishAsBroadcasterAsync()
        {
            try
            {
                var body     = $"{{ \"signalFromId\": \"{localId}\" }}";
                var response = await NetworkUtil.PostJsonAsync($"{ServerAddress}broadcast/{streamName}", body);

                Util.WriteLine($"SFU/Transport capabilities received:\n{response}");

                var _ = new MediaServerSignaler(this, localId, streamName, new WebRTCSession(webrtc));
            }
            catch (Exception e)
            {
                Util.WriteLine($"Failed to etablish as a broadcaster ({e.Message}). Stream will be empty.");
                Util.WriteLine(e.ToString());
            }
        }