Module twist::server [] [src]

Server API

Decode PING Base Frame from client

    let ping_vec = PING.to_vec();
    let mut eb = BytesMut::with_capacity(256);
    eb.extend(ping_vec);
    let mut fc: BaseFrameCodec = Default::default();
    let mut encoded = BytesMut::with_capacity(256);

    if let Ok(Some(frame)) = fc.decode(&mut eb) {
        assert!(frame.fin());
        assert!(!frame.rsv1());
        assert!(!frame.rsv2());
        assert!(!frame.rsv3());
        // All frames from client must be masked.
        assert!(frame.masked());
        assert!(frame.opcode() == OpCode::Ping);
        assert!(frame.mask() == 1);
        assert!(frame.payload_length() == 0);
        assert!(frame.extension_data().is_none());
        assert!(frame.application_data().is_empty());

        if fc.encode(frame, &mut encoded).is_ok() {
            for (a, b) in encoded.iter().zip(PING.to_vec().iter()) {
                assert!(a == b);
            }
        }
    } else {
        assert!(false);
    }

Structs

BaseFrame

Represents the parts of a base frame.

BaseFrameCodec

Codec for encoding/decoding websocket base frames.

HandshakeCodec

Codec for decoding/encoding websocket server handshake frames.

HandshakeRequestFrame

Client handshake request data received by server.

HandshakeResponseFrame

Data needed to construct a server response to a client request.

TwistCodec

Codec for use with the WebSocketProtocol. Used when decoding/encoding of both websocket handshakes and websocket base frames.

WebSocketFrame

A twist websocket frame. Note a websocket frame is either a client handshake frame, a server handshake frame, or a base frame. They are mutually exclusive.

WebSocketProtocol

The protocol that can bu use to run on a tokio-proto TcpServer to handle websocket handshake and base frames.

Enums

OpCode

Operation codes defined in RFC6455.