Struct websockets::WebSocket[][src]

pub struct WebSocket { /* fields omitted */ }
Expand description

Manages the WebSocket connection; used to connect, send data, and receive data.

Connect with WebSocket::connect():

let mut ws = WebSocket::connect("wss://echo.websocket.org/").await?;

Cuustomize the handshake using a WebSocketBuilder obtained from WebSocket::builder():

let mut ws = WebSocket::builder()
    .add_subprotocol("wamp")
    .connect("wss://echo.websocket.org")
    .await?;

Use the WebSocket::send* methods to send frames:

ws.send_text("foo".to_string()).await?;

Use WebSocket::receive() to receive frames:

if let Frame::Text { payload: received_msg, .. } =  ws.receive().await? {
    // echo.websocket.org echoes text frames
    assert_eq!(received_msg, "foo".to_string());
}

Close the connection with WebSocket::close():

ws.close(Some((1000, String::new()))).await?;
if let Frame::Close{ payload: Some((status_code, _reason)) } = ws.receive().await? {
    assert_eq!(status_code, 1000);
}

Splitting

To facilitate simulataneous reads and writes, the WebSocket can be split into a read half and a write half. The read half allows frames to be received, while the write half allows frames to be sent.

If the read half receives a Ping or Close frame, it needs to send a Pong or echo the Close frame and close the WebSocket, respectively. The write half is notified of these events, but it cannot act on them unless it is flushed. Events can be explicitly flushed, but sending a frame will also flush events. If frames are not being sent frequently, consider explicitly flushing events.

Flushing is done automatically if you are using the the WebSocket type by itself.

Implementations

Constructs a WebSocketBuilder, which can be used to customize the WebSocket handshake.

Connects to a URL (and performs the WebSocket handshake).

Receives a Frame over the WebSocket connection.

If the received frame is a Ping frame, a Pong frame will be sent. If the received frame is a Close frame, an echoed Close frame will be sent and the WebSocket will close.

Receives a Frame over the WebSocket connection without handling incoming frames. For example, receiving a Ping frame will not queue a Pong frame to be sent, and receiving a Close frame will not queue a Close frame to be sent nor close the connection.

To automatically handle incoming frames, use the receive() method instead.

Sends an already constructed Frame over the WebSocket connection.

Sends a Text frame over the WebSocket connection, constructed from passed arguments. continuation will be false and fin will be true. To use a custom continuation or fin, construct a Frame and use WebSocket::send().

Sends a Binary frame over the WebSocket connection, constructed from passed arguments. continuation will be false and fin will be true. To use a custom continuation or fin, construct a Frame and use WebSocket::send().

Sends a Close frame over the WebSocket connection, constructed from passed arguments, and closes the WebSocket connection. This method will attempt to wait for an echoed Close frame, which is returned.

Sends a Ping frame over the WebSocket connection, constructed from passed arguments.

Sends a Pong frame over the WebSocket connection, constructed from passed arguments.

Shuts down the WebSocket connection without sending a Close frame. It is recommended to use the close() method instead.

Splits the WebSocket into a read half and a write half, which can be used separately. Accepted subprotocol and handshake response headers data will be lost.

Joins together a split read half and write half to reconstruct a WebSocket.

Returns the subprotocol that was accepted by the server during the handshake, if any. This data will be lost if the WebSocket is split.

Returns the headers that were returned by the server during the handshake. This data will be lost if the WebSocket is split.

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.