Poco::Net

class WebSocketImpl

Library: Net
Package: WebSocket
Header: Poco/Net/WebSocketImpl.h

Description

This class implements a WebSocket, according to the WebSocket protocol described in RFC 6455.

Inheritance

Direct Base Classes: StreamSocketImpl

All Base Classes: SocketImpl, StreamSocketImpl, Poco::RefCountedObject

Member Summary

Member Functions: acceptConnection, available, bind, bind6, close, connect, connectNB, frameFlags, getBlocking, getMaxPayloadSize, getReceiveBufferSize, getReceiveTimeout, getSendBufferSize, getSendTimeout, listen, mustMaskPayload, peekHeader, peekSomeBytes, receiveBytes, receiveFrom, receiveNBytes, receivePayload, receiveSomeBytes, secure, sendBytes, sendTo, sendUrgent, setBlocking, setMaxPayloadSize, setReceiveBufferSize, setReceiveTimeout, setSendBufferSize, setSendTimeout, shutdown, shutdownReceive, shutdownSend, skipHeader

Inherited Functions: acceptConnection, address, available, bind, bind6, checkBrokenTimeout, close, connect, connectNB, duplicate, error, fcntl, getBlocking, getBroadcast, getError, getKeepAlive, getLinger, getNoDelay, getOOBInline, getOption, getRawOption, getReceiveBufferSize, getReceiveTimeout, getReuseAddress, getReusePort, getSendBufferSize, getSendTimeout, init, initSocket, initialized, ioctl, lastError, listen, peerAddress, poll, receiveBytes, receiveFrom, referenceCount, release, reset, secure, sendBytes, sendTo, sendUrgent, setBlocking, setBroadcast, setKeepAlive, setLinger, setNoDelay, setOOBInline, setOption, setRawOption, setReceiveBufferSize, setReceiveTimeout, setReuseAddress, setReusePort, setSendBufferSize, setSendTimeout, shutdown, shutdownReceive, shutdownSend, socketError, sockfd, type, useFileDescriptor

Nested Classes

struct ReceiveState protected

 more...

struct SendState protected

 more...

Enumerations

Anonymous protected

FRAME_FLAG_MASK = 0x80

MAX_HEADER_LENGTH = 14

MASK_LENGTH = 4

Constructors

WebSocketImpl

WebSocketImpl(
    StreamSocketImpl * pStreamSocketImpl,
    HTTPSession & session,
    bool mustMaskPayload
);

Creates a WebSocketImpl.

Destructor

~WebSocketImpl protected virtual

virtual ~WebSocketImpl();

Member Functions

acceptConnection virtual

virtual SocketImpl * acceptConnection(
    SocketAddress & clientAddr
);

available virtual

virtual int available();

bind virtual

virtual void bind(
    const SocketAddress & address,
    bool reuseAddress = false
);

bind virtual

virtual void bind(
    const SocketAddress & address,
    bool reuseAddress,
    bool reusePort
);

bind6 virtual

virtual void bind6(
    const SocketAddress & address,
    bool reuseAddress = false,
    bool ipV6Only = false
);

bind6 virtual

virtual void bind6(
    const SocketAddress & address,
    bool reuseAddress,
    bool reusePort,
    bool ipV6Only
);

close virtual

virtual void close();

connect virtual

virtual void connect(
    const SocketAddress & address
);

connect virtual

virtual void connect(
    const SocketAddress & address,
    const Poco::Timespan & timeout
);

connectNB virtual

virtual void connectNB(
    const SocketAddress & address
);

frameFlags inline

int frameFlags() const;

Returns the frame flags of the most recently received frame.

getBlocking virtual

virtual bool getBlocking() const;

getMaxPayloadSize inline

int getMaxPayloadSize() const;

Returns the maximum payload size for receiveFrame().

The default is std::numeric_limits<int>::max().

getReceiveBufferSize virtual

virtual int getReceiveBufferSize();

getReceiveTimeout virtual

virtual Poco::Timespan getReceiveTimeout();

getSendBufferSize virtual

virtual int getSendBufferSize();

getSendTimeout virtual

virtual Poco::Timespan getSendTimeout();

listen virtual

virtual void listen(
    int backlog = 64
);

mustMaskPayload inline

bool mustMaskPayload() const;

Returns true if the payload must be masked.

receiveBytes virtual

virtual int receiveBytes(
    void * buffer,
    int length,
    int flags
);

Receives a WebSocket protocol frame.

See WebSocket::receiveFrame() for more information, including behavior if set to non-blocking.

receiveBytes virtual

virtual int receiveBytes(
    Poco::Buffer < char > & buffer,
    int flags = 0,
    const Poco::Timespan & span = 0
);

Receives a WebSocket protocol frame.

See WebSocket::receiveFrame() for more information, including behavior if set to non-blocking.

receiveFrom virtual

virtual int receiveFrom(
    void * buffer,
    int length,
    SocketAddress & address,
    int flags = 0
);

secure virtual

virtual bool secure() const;

sendBytes virtual

virtual int sendBytes(
    const void * buffer,
    int length,
    int flags
);

Sends a WebSocket protocol frame.

See WebSocket::sendFrame() for more information, including behavior if set to non-blocking.

sendTo virtual

virtual int sendTo(
    const void * buffer,
    int length,
    const SocketAddress & address,
    int flags = 0
);

sendUrgent virtual

virtual void sendUrgent(
    unsigned char data
);

setBlocking virtual

virtual void setBlocking(
    bool flag
);

setMaxPayloadSize

void setMaxPayloadSize(
    int maxPayloadSize
);

Sets the maximum payload size for receiveFrame().

The default is std::numeric_limits<int>::max().

setReceiveBufferSize virtual

virtual void setReceiveBufferSize(
    int size
);

setReceiveTimeout virtual

virtual void setReceiveTimeout(
    const Poco::Timespan & timeout
);

setSendBufferSize virtual

virtual void setSendBufferSize(
    int size
);

setSendTimeout virtual

virtual void setSendTimeout(
    const Poco::Timespan & timeout
);

shutdown virtual

virtual int shutdown();

shutdownReceive virtual

virtual void shutdownReceive();

shutdownSend virtual

virtual int shutdownSend();

peekHeader protected

int peekHeader(
    ReceiveState & receiveState
);

peekSomeBytes protected

int peekSomeBytes(
    char * buffer,
    int length
);

receiveNBytes protected

int receiveNBytes(
    void * buffer,
    int length
);

receivePayload protected

int receivePayload(
    char * buffer,
    int payloadLength,
    char mask[MASK_LENGTH],
    bool useMask
);

receiveSomeBytes protected

int receiveSomeBytes(
    char * buffer,
    int length
);

skipHeader protected

void skipHeader(
    int headerLength
);