| Home | Libraries | People | FAQ | More

###### websocket::stream::close (2 of 2 overloads)

Perform the WebSocket closing handshake and close the underlying stream.

###### Synopsis

    void
    close(
        close_reason const& cr,
        error_code& ec);

###### Description

This function sends a close frame to begin the WebSocket closing handshake and waits for a corresponding close frame in response. Once received, it calls `teardown` to gracefully shut down the underlying stream.

After beginning the closing handshake, the program should not write further message data, pings, or pongs. However, it can still read incoming message data. A read returning `error::closed` indicates a successful connection closure.

The call blocks until one of the following conditions is true:

- The closing handshake completes, and `teardown` finishes.
- An error occurs.

The algorithm, known as a composed operation, is implemented in terms of calls to the next layer's `write_some` function.

###### Parameters

Name | Description
--- | ---
`cr` | The reason for the close. If the close reason specifies a close code other than `beast::websocket::close_code::none`, the close frame is sent with the close code and optional reason string. Otherwise, the close frame is sent with no payload.
`ec` | Set to indicate what error occurred, if any.

###### See Also

- Websocket Closing Handshake (RFC6455)