A subscription causes the publisher to send newly published objects for a track.
Subscribe only requests newly published or received Objects. Objects from the past are retrieved using FETCH (Section 9.16).
The format of SUBSCRIBE is as follows:
SUBSCRIBE Message {
Type (i) = 0x3,
Length (16),
Request ID (i),
Track Namespace (..),
Track Name Length (i),
Track Name (..),
Number of Parameters (i),
Parameters (..) ...
}
-
Request ID: See Section 9.1.
-
Track Namespace: Identifies the namespace of the track as defined in (Section 2.4.1).
-
Track Name: Identifies the track name as defined in (Section 2.4.1).
-
Parameters: The parameters are defined in Section 9.2.2.
On successful subscription, the publisher MUST reply with a SUBSCRIBE_OK, allowing the subscriber to determine the start group/object when not explicitly specified, and start sending objects.
If the publisher cannot satisfy the requested Subscription Filter (see
Section 9.2.2.5) or if the entire End Group has already been published
it SHOULD send a REQUEST_ERROR with code INVALID_RANGE. A publisher MUST NOT send objects from outside the requested range.
Subscribing with the FORWARD parameter (Section 9.2.2.8) equal to 0 allows publisher or relay to prepare to serve the subscription in advance, reducing the time to receive objects in the future.