Groove communicates with Simple Symmetric Transmission Protocol (SSTP) using 2 types of connections.
Using phone conversation as an example, when Alice calls bob, if Bob answers the call, they are directly connected. This is logically similar to a Groove-to-Groove connection between two Groove clients. If for some reason, Bob is not answering the phone; Alice will leave a message in Bob’s voice message box which later can then be consumed by Bob with his pin when he connects to the voice message box. This is logically similar to a Groove-to-Relay connection for the sender to queue the message for an intended recipient at the recipient’s designated Relay. To consume a message queued at the recipient’s designated Relay; a recipient will employ a Groove-to-Relay connection as well. Notice Groove Relay does not initiate connections to client. It is always a Groove client initiates and connects to the client’s designated Relay.
As depicted in the following slide, Groove will always try first to establish and prefer a direct, i.e. Groove-to-Groove, connection followed by Groove-to-Relay connection as needed. A Groove-to-Groove connection requires TCP 2492 open. Groove-to-Relay on the other hand uses HTTP PROXY Connect to or tunneling through port 443, if allowed, or simply HTTP port 80.
A technical overview of how Groove works is also available here.