I guess it's fine to treat udp sockets differently from TCP/WebSocket sockets. In that case, the Protocol can be removed.