A client should send requests to a created XIMSS session use the following Session URL:
where sessionID is the session message urlID attribute.
The HTTP request body should contain one <XIMSS /> element, with zero, one, or more XIMSS protocol requests.
The Server returns one <XIMSS /> element in the HTTP response body. This element contains the XIMSS protocol response messages (one for each XIMSS request sent, in the same order), and all synchronous data messages generated with the submitted XIMSS requests.
If a XIMSS client works in an unreliable environment, where it may have to resend HTTP requests, then each non-empty HTTP request should contain a reqSeq parameter. This parameter value should be increased by 1 for each new HTTP request sent.
If the Server receives an HTTP request with the same reqSeq parameter as the previously received and processed HTTP request, then the Server resends the last response (one it has sent to the previous HTTP request wit the same reqSeq).
If the Server receives an HTTP request with the reqSeq parameter not equal to the reqSeq parameter of the previously received request and not equal to the reqSeq parameter of the previously received request increased by 1, then the Server returns an error.
A client application can use an "empty request" (an HTTP request without a body) to read asynchronous XIMSS data messages.
When such an empty request is received, the Server checks if there is any pending asynchronous data messages for the specified session. If there is no pending asynchronous data messages, the request is held until either:
An empty request can specify the waiting time as the maxWait parameter (number of seconds).
If no data messages were retrieved, the Server sends a response containing an empty <XIMSS/> element, without any attributes.
If some data messages were retrieved, the Server sends a response (an "asynchronous response") containing one <XIMSS/> element, with the respSeq attribute. This attribute contains the sequence number for this <XIMSS/> response element.
For each session, the Server keeps the last "asynchronous response" composed.
Each empty request should contain a ackSeq parameter. It should contain the respSeq value of the last received asynchronous response. If the client has not received any asynchronous response yet, this parameter value must be 0.
When the Server receives an empty request with the ackSeq equal to the respSeq value of the kept last composed asynchronous response, it considers that response as "acknowledged", and removes it.
When the Server receives an empty request with the ackSeq equal to the respSeq value of the last composed asynchronous response minus one (respSeq-1), and it still keeps this composed response, the Server resends that response to the client. As a re