Use new node identifier
Summary
Introduce new identifier for mapping Nodes and Connections which is a combination of the hostname and protocol, instead of just the hostname.
Explain your context
In the LiveConnection
and BaseConnection.from_node()
we map Nodes and Connections based on the hostname of the Node/Connection.
This approach wouldn't work with Nodes/Connection without a hostname or multiple Nodes/Connections that have the same hostname but different protocols, i.e. different type of Node/Connection.
To solve this we can use a new identifier, which is a combination of the hostname (could be None) and the protocol (can't be None).