# 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, getMaxPayloadSize, getReceiveTimeout, getSendTimeout, listen, mustMaskPayload, receiveBytes, receiveFrom, receiveHeader, receiveNBytes, receivePayload, receiveSomeBytes, secure, sendBytes, sendTo, sendUrgent, setMaxPayloadSize, setReceiveTimeout, setSendTimeout, shutdown, shutdownReceive, shutdownSend

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

## Enumerations

### Anonymous

FRAME_FLAG_MASK = 0x80

MAX_HEADER_LENGTH = 14

## Constructors

### WebSocketImpl

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

Creates a WebSocketImpl.

## Destructor

### ~WebSocketImpl

virtual ~WebSocketImpl();

## Member Functions

### acceptConnection

virtual SocketImpl * acceptConnection(
SocketAddress & clientAddr
);

See also: Poco::Net::SocketImpl::acceptConnection()

### available

virtual int available();

See also: Poco::Net::SocketImpl::available()

### bind

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

See also: Poco::Net::SocketImpl::bind()

### bind

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

See also: Poco::Net::SocketImpl::bind()

### bind6

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

See also: Poco::Net::SocketImpl::bind6()

### bind6

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

See also: Poco::Net::SocketImpl::bind6()

### close

virtual void close();

See also: Poco::Net::SocketImpl::close()

### connect

virtual void connect(
const SocketAddress & address
);

See also: Poco::Net::SocketImpl::connect()

### connect

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

See also: Poco::Net::SocketImpl::connect()

### connectNB

virtual void connectNB(
const SocketAddress & address
);

See also: Poco::Net::SocketImpl::connectNB()

### frameFlags

int frameFlags() const;

Returns the frame flags of the most recently received frame.

### getMaxPayloadSize

int getMaxPayloadSize() const;

Returns the maximum payload size for receiveFrame().

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

### getReceiveTimeout

virtual Poco::Timespan getReceiveTimeout();

See also: Poco::Net::SocketImpl::getReceiveTimeout()

### getSendTimeout

virtual Poco::Timespan getSendTimeout();

See also: Poco::Net::SocketImpl::getSendTimeout()

### listen

virtual void listen(
int backlog = 64
);

See also: Poco::Net::SocketImpl::listen()

### mustMaskPayload

bool mustMaskPayload() const;

Returns true if the payload must be masked.

### receiveBytes

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

Receives a WebSocket protocol frame.

See also: Poco::Net::SocketImpl::receiveBytes()

### receiveBytes

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

Receives a WebSocket protocol frame.

See also: Poco::Net::SocketImpl::receiveBytes()

### receiveFrom

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

See also: Poco::Net::SocketImpl::receiveFrom()

### secure

virtual bool secure() const;

See also: Poco::Net::SocketImpl::secure()

### sendBytes

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

Sends a WebSocket protocol frame.

See also: Poco::Net::StreamSocketImpl::sendBytes()

### sendTo

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

See also: Poco::Net::SocketImpl::sendTo()

### sendUrgent

virtual void sendUrgent(
unsigned char data
);

See also: Poco::Net::SocketImpl::sendUrgent()

### setMaxPayloadSize

void setMaxPayloadSize(
int maxPayloadSize
);

Sets the maximum payload size for receiveFrame().

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

### setReceiveTimeout

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

See also: Poco::Net::SocketImpl::setReceiveTimeout()

### setSendTimeout

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

See also: Poco::Net::SocketImpl::setSendTimeout()

### shutdown

virtual void shutdown();

See also: Poco::Net::SocketImpl::shutdown()

### shutdownReceive

virtual void shutdownReceive();

See also: Poco::Net::SocketImpl::shutdownReceive()

### shutdownSend

virtual void shutdownSend();

See also: Poco::Net::SocketImpl::shutdownSend()

### receiveHeader

int receiveHeader(
char mask[4],
bool & useMask
);

### receiveNBytes

int receiveNBytes(
void * buffer,
int bytes
);

### receivePayload

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

### receiveSomeBytes

int receiveSomeBytes(
char * buffer,
int bytes
);