public Channel(string topic = "", bool canSend = true, bool canReceive = false, string address = null)
{
_topic = topic;
_canSend = canSend;
_canReceive = canReceive;
_address = address;
var uri = new Uri(_address);
Protocol = uri.Scheme;
Uri = _address;
if (!(_canSend || _canReceive))
throw new InvalidOperationException("Channel was told not to Send or Receive.");
if (_canSend)
StartSender();
if (!_canReceive) return;
MonitorMessages();
}