| Home | Libraries | People | FAQ | More

###### websocket::stream::handshake (4 of 4 overloads)

Send an HTTP WebSocket Upgrade request and receive the response.

Synopsis

    void
    handshake(
        response_type& res,
        string_view host,
        string_view target,
        error_code& ec);

Description

This function is used to synchronously send the WebSocket upgrade HTTP request. The call blocks until one of the following conditions is true:

- The request is sent and the response is received.
- An error occurs on the stream

This function is implemented in terms of one or more calls to the next layer's `read_some` and `write_some` functions.

The operation is successful if the received HTTP response indicates a successful HTTP Upgrade (represented by a Status-Code of 101, "switching protocols").

Parameters

Name | Description
--- | ---
`res` | The HTTP Upgrade response returned by the remote endpoint. If `ec` is set, the returned value is undefined.
`host` | The name of the remote host, required by the HTTP protocol.
`target` | The Request Target, which may not be empty, required by the HTTP protocol.
`ec` | Set to indicate what error occurred, if any.

Example

    websocket::stream<ip::tcp::socket> ws{io_context};
    ...
    error_code ec;
    response_type res;
    ws.handshake(res, host, target, ec);
    if(ec)
    {
        // An error occurred.
    }