3.2 Client Details

A client initiates the process by establishing a WebSocket connection, as specified in [RFC6455], to a service. A client MUST specify that it intends to communicate with the service using this SOAP-over-Websocket subprotocol by providing a "soap" value in the "Sec-WebSocket-Protocol" HTTP header during the initialization while performing a WebSocket handshake as specified in [RFC6455] section 1.3. A client MUST also specify a soap-content-type header to indicate the content-type of the subsequent SOAP messages once the WebSocket handshake is successfully completed. A client SHOULD also specify a 'microsoft-binary-transfer-mode' with the transfer-mode while using the binary encoding as specified in [MC-NBFS] or [MC-NBFSE]. Valid values for the transfer-mode are:

  1. 'Streamed', which indicates that messages sent and received from the web service endpoint are transferred as a stream of bytes.

  2. 'StreamedRequest', which indicates that only the messages sent to a web service endpoint are transferred as a stream of bytes.

  3. 'StreamedResponse', which indicates that the messages received from the web service endpoint are interpreted as a stream of bytes.

Once a WebSocket connection has been successfully established between the client and the server, all subsequent message exchanges MUST conform to the SOAP 1.2 [SOAP1.2-1/2007] specification with the encoding as specified in [RFC3902] while sending the messages using the framing as defined in [RFC6455].