| Home | Libraries | People | FAQ | More

##### websocket::stream::async_ping

Send a websocket ping control frame asynchronously.

###### Synopsis

    template<
        class WriteHandler>
    DEDUCED
    async_ping(
        ping_data const& payload,
        WriteHandler&& handler);

###### Description

This function is used to asynchronously send a ping frame, which usually elicits an automatic pong control frame response from the peer.

- The ping frame is written.
- An error occurs.

The algorithm, known as a composed asynchronous operation, is implemented in terms of calls to the next layer's `async_write_some` function. The program must ensure that no other calls to `websocket::stream::ping`, `websocket::stream::pong`, `websocket::stream::async_ping`, or `websocket::stream::async_pong` are performed until this operation completes. If a close frame is sent or received before the ping frame is sent, the error received by this completion handler will be `net::error::operation_aborted`.

###### Parameters

Name | Description
--- | ---
`payload` | The payload of the ping message, which may be empty. The implementation will not access the contents of this object after the initiating function returns.

`handler`

The completion handler to invoke when the operation completes. The implementation takes ownership of the handler by performing a decay-copy. The equivalent function signature of the handler must be:

    void handler(
        error_code const& ec     // Result of operation
    );

Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using `net::post`.