WebSocketResource, MessageSender, MessageReceiver, and SignalClient references are probably in cycles (as well as being inconvenient/confusing)