autobahn.websocket.compress.
PerMessageCompressOffer
[source]¶Base class for WebSocket compression parameter client offers.
autobahn.websocket.compress.
PerMessageCompressOfferAccept
[source]¶Base class for WebSocket compression parameter client offer accepts by the server.
autobahn.websocket.compress.
PerMessageCompressResponse
[source]¶Base class for WebSocket compression parameter server responses.
autobahn.websocket.compress.
PerMessageCompressResponseAccept
[source]¶Base class for WebSocket compression parameter server response accepts by client.
autobahn.websocket.compress.
PerMessageCompress
[source]¶Base class for WebSocket compression negotiated parameters.
autobahn.websocket.compress.
PerMessageDeflateOffer
(acceptNoContextTakeover=True, acceptMaxWindowBits=True, requestNoContextTakeover=False, requestMaxWindowBits=0)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOffer
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of extension parameters for permessage-deflate WebSocket extension offered by a client to a server.
Constructor.
Parameters: |
|
---|
getExtensionString
()[source]¶Returns the WebSocket extension configuration string as sent to the server.
Returns: | str – PMCE configuration string. |
---|
parse
(params)[source]¶Parses a WebSocket extension offer for permessage-deflate provided by a client to a server.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageDeflateOffer . |
autobahn.websocket.compress.
PerMessageDeflateOfferAccept
(offer, requestNoContextTakeover=False, requestMaxWindowBits=0, noContextTakeover=None, windowBits=None, memLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOfferAccept
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of parameters with which to accept an permessage-deflate offer from a client by a server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress.
PerMessageDeflateResponse
(client_max_window_bits, client_no_context_takeover, server_max_window_bits, server_no_context_takeover)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponse
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of parameters for permessage-deflate responded by server.
parse
(params)[source]¶Parses a WebSocket extension response for permessage-deflate provided by a server to a client.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageDeflateResponse . |
autobahn.websocket.compress.
PerMessageDeflateResponseAccept
(response, noContextTakeover=None, windowBits=None, memLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponseAccept
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of parameters with which to accept an permessage-deflate response from a server by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress.
PerMessageDeflate
(isServer, server_no_context_takeover, client_no_context_takeover, server_max_window_bits, client_max_window_bits, mem_level)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompress
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
permessage-deflate WebSocket extension processor.
DEFAULT_MEM_LEVEL
= 8¶DEFAULT_WINDOW_BITS
= 15¶autobahn.websocket.compress.
PerMessageBzip2Offer
(acceptMaxCompressLevel=True, requestMaxCompressLevel=0)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOffer
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of extension parameters for permessage-bzip2 WebSocket extension offered by a client to a server.
Constructor.
Parameters: |
---|
getExtensionString
()[source]¶Returns the WebSocket extension configuration string as sent to the server.
Returns: | str – PMCE configuration string. |
---|
parse
(params)[source]¶Parses a WebSocket extension offer for permessage-bzip2 provided by a client to a server.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageBzip2Offer . |
autobahn.websocket.compress.
PerMessageBzip2OfferAccept
(offer, requestMaxCompressLevel=0, compressLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOfferAccept
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of parameters with which to accept an permessage-bzip2 offer from a client by a server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress.
PerMessageBzip2Response
(client_max_compress_level, server_max_compress_level)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponse
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of parameters for permessage-bzip2 responded by server.
parse
(params)[source]¶Parses a WebSocket extension response for permessage-bzip2 provided by a server to a client.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageBzip2Response . |
autobahn.websocket.compress.
PerMessageBzip2ResponseAccept
(response, compressLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponseAccept
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of parameters with which to accept an permessage-bzip2 response from a server by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress.
PerMessageBzip2
(isServer, server_max_compress_level, client_max_compress_level)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompress
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
permessage-bzip2 WebSocket extension processor.
DEFAULT_COMPRESS_LEVEL
= 9¶autobahn.websocket.compress.
PerMessageSnappyOffer
(acceptNoContextTakeover=True, requestNoContextTakeover=False)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOffer
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of extension parameters for permessage-snappy WebSocket extension offered by a client to a server.
Constructor.
Parameters: |
---|
getExtensionString
()[source]¶Returns the WebSocket extension configuration string as sent to the server.
Returns: | str – PMCE configuration string. |
---|
parse
(params)[source]¶Parses a WebSocket extension offer for permessage-snappy provided by a client to a server.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageSnappyOffer . |
autobahn.websocket.compress.
PerMessageSnappyOfferAccept
(offer, requestNoContextTakeover=False, noContextTakeover=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOfferAccept
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of parameters with which to accept an permessage-snappy offer from a client by a server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress.
PerMessageSnappyResponse
(client_no_context_takeover, server_no_context_takeover)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponse
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of parameters for permessage-snappy responded by server.
parse
(params)[source]¶Parses a WebSocket extension response for permessage-snappy provided by a server to a client.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageSnappyResponse . |
autobahn.websocket.compress.
PerMessageSnappyResponseAccept
(response, noContextTakeover=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponseAccept
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of parameters with which to accept an permessage-snappy response from a server by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress.
PerMessageSnappy
(isServer, server_no_context_takeover, client_no_context_takeover)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompress
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
permessage-snappy WebSocket extension processor.
autobahn.websocket.compress_base.
PerMessageCompressOffer
[source]¶Base class for WebSocket compression parameter client offers.
autobahn.websocket.compress_base.
PerMessageCompressOfferAccept
[source]¶Base class for WebSocket compression parameter client offer accepts by the server.
autobahn.websocket.compress_base.
PerMessageCompressResponse
[source]¶Base class for WebSocket compression parameter server responses.
autobahn.websocket.compress_bzip2.
PerMessageBzip2Mixin
[source]¶Mixin class for this extension.
EXTENSION_NAME
= 'permessage-bzip2'¶Name of this WebSocket extension.
COMPRESS_LEVEL_PERMISSIBLE_VALUES
= [1, 2, 3, 4, 5, 6, 7, 8, 9]¶Permissible value for compression level parameter.
autobahn.websocket.compress_bzip2.
PerMessageBzip2Offer
(acceptMaxCompressLevel=True, requestMaxCompressLevel=0)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOffer
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of extension parameters for permessage-bzip2 WebSocket extension offered by a client to a server.
Constructor.
Parameters: |
---|
parse
(params)[source]¶Parses a WebSocket extension offer for permessage-bzip2 provided by a client to a server.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageBzip2Offer . |
autobahn.websocket.compress_bzip2.
PerMessageBzip2OfferAccept
(offer, requestMaxCompressLevel=0, compressLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOfferAccept
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of parameters with which to accept an permessage-bzip2 offer from a client by a server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress_bzip2.
PerMessageBzip2Response
(client_max_compress_level, server_max_compress_level)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponse
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of parameters for permessage-bzip2 responded by server.
parse
(params)[source]¶Parses a WebSocket extension response for permessage-bzip2 provided by a server to a client.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageBzip2Response . |
autobahn.websocket.compress_bzip2.
PerMessageBzip2ResponseAccept
(response, compressLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponseAccept
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
Set of parameters with which to accept an permessage-bzip2 response from a server by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress_bzip2.
PerMessageBzip2
(isServer, server_max_compress_level, client_max_compress_level)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompress
, autobahn.websocket.compress_bzip2.PerMessageBzip2Mixin
permessage-bzip2 WebSocket extension processor.
DEFAULT_COMPRESS_LEVEL
= 9¶autobahn.websocket.compress_deflate.
PerMessageDeflateMixin
[source]¶Mixin class for this extension.
EXTENSION_NAME
= 'permessage-deflate'¶Name of this WebSocket extension.
WINDOW_SIZE_PERMISSIBLE_VALUES
= [8, 9, 10, 11, 12, 13, 14, 15]¶Permissible value for window size parameter. Higher values use more memory, but produce smaller output. The default is 15.
MEM_LEVEL_PERMISSIBLE_VALUES
= [1, 2, 3, 4, 5, 6, 7, 8, 9]¶Permissible value for memory level parameter. Higher values use more memory, but are faster and produce smaller output. The default is 8.
autobahn.websocket.compress_deflate.
PerMessageDeflateOffer
(acceptNoContextTakeover=True, acceptMaxWindowBits=True, requestNoContextTakeover=False, requestMaxWindowBits=0)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOffer
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of extension parameters for permessage-deflate WebSocket extension offered by a client to a server.
Constructor.
Parameters: |
|
---|
parse
(params)[source]¶Parses a WebSocket extension offer for permessage-deflate provided by a client to a server.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageDeflateOffer . |
autobahn.websocket.compress_deflate.
PerMessageDeflateOfferAccept
(offer, requestNoContextTakeover=False, requestMaxWindowBits=0, noContextTakeover=None, windowBits=None, memLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOfferAccept
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of parameters with which to accept an permessage-deflate offer from a client by a server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress_deflate.
PerMessageDeflateResponse
(client_max_window_bits, client_no_context_takeover, server_max_window_bits, server_no_context_takeover)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponse
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of parameters for permessage-deflate responded by server.
parse
(params)[source]¶Parses a WebSocket extension response for permessage-deflate provided by a server to a client.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageDeflateResponse . |
autobahn.websocket.compress_deflate.
PerMessageDeflateResponseAccept
(response, noContextTakeover=None, windowBits=None, memLevel=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponseAccept
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
Set of parameters with which to accept an permessage-deflate response from a server by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress_deflate.
PerMessageDeflate
(isServer, server_no_context_takeover, client_no_context_takeover, server_max_window_bits, client_max_window_bits, mem_level)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompress
, autobahn.websocket.compress_deflate.PerMessageDeflateMixin
permessage-deflate WebSocket extension processor.
DEFAULT_WINDOW_BITS
= 15¶DEFAULT_MEM_LEVEL
= 8¶autobahn.websocket.compress_snappy.
PerMessageSnappyMixin
[source]¶Mixin class for this extension.
EXTENSION_NAME
= 'permessage-snappy'¶Name of this WebSocket extension.
autobahn.websocket.compress_snappy.
PerMessageSnappyOffer
(acceptNoContextTakeover=True, requestNoContextTakeover=False)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOffer
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of extension parameters for permessage-snappy WebSocket extension offered by a client to a server.
Constructor.
Parameters: |
---|
parse
(params)[source]¶Parses a WebSocket extension offer for permessage-snappy provided by a client to a server.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageSnappyOffer . |
autobahn.websocket.compress_snappy.
PerMessageSnappyOfferAccept
(offer, requestNoContextTakeover=False, noContextTakeover=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressOfferAccept
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of parameters with which to accept an permessage-snappy offer from a client by a server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress_snappy.
PerMessageSnappyResponse
(client_no_context_takeover, server_no_context_takeover)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponse
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of parameters for permessage-snappy responded by server.
parse
(params)[source]¶Parses a WebSocket extension response for permessage-snappy provided by a server to a client.
Parameters: | params (list) – Output from autobahn.websocket.WebSocketProtocol._parseExtensionsHeader() . |
---|---|
Returns: | object – A new instance of autobahn.compress.PerMessageSnappyResponse . |
autobahn.websocket.compress_snappy.
PerMessageSnappyResponseAccept
(response, noContextTakeover=None)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompressResponseAccept
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
Set of parameters with which to accept an permessage-snappy response from a server by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.compress_snappy.
PerMessageSnappy
(isServer, server_no_context_takeover, client_no_context_takeover)[source]¶Bases: autobahn.websocket.compress_base.PerMessageCompress
, autobahn.websocket.compress_snappy.PerMessageSnappyMixin
permessage-snappy WebSocket extension processor.
autobahn.websocket.http.
HttpException
(code, reason)[source]¶Bases: exceptions.Exception
Throw an instance of this class to deny a WebSocket connection
during handshake in autobahn.websocket.protocol.WebSocketServerProtocol.onConnect()
.
Constructor.
Parameters: |
---|
autobahn.websocket.interfaces.
IWebSocketChannel
[source]¶Bases: object
A WebSocket channel is a bidirectional, full-duplex, ordered, reliable message channel over a WebSocket connection as specified in RFC6455.
This interface defines a message-based API to WebSocket plus auxiliary hooks and methods.
onConnect
(requestOrResponse)[source]¶Callback fired during WebSocket opening handshake when a client connects (to a server with request from client) or when server connection established (by a client with response from server).
Parameters: | requestOrResponse (Instance of autobahn.websocket.protocol.ConnectionRequest
or autobahn.websocket.protocol.ConnectionResponse .) – Connection request (for servers) or response (for clients). |
---|---|
Returns: | When this callback is fired on a WebSocket server, you may return one of the
following:
If the client announced one or multiple subprotocols, the server MUST select one of the given list. |
onOpen
()[source]¶Callback fired when the initial WebSocket opening handshake was completed. You now can send and receive WebSocket messages.
sendMessage
(payload, isBinary=False, fragmentSize=None, sync=False, doNotCompress=False)[source]¶Send a WebSocket message over the connection to the peer.
Parameters: |
|
---|
onMessage
(payload, isBinary)[source]¶Callback fired when a complete WebSocket message was received.
Parameters: |
---|
sendClose
(code=None, reason=None)[source]¶Starts a WebSocket closing handshake tearing down the WebSocket connection.
Parameters: |
---|
onClose
(wasClean, code, reason)[source]¶Callback fired when the WebSocket connection has been closed (WebSocket closing handshake has been finished or the connection was closed uncleanly).
Parameters: |
|
---|
sendPreparedMessage
(preparedMsg)[source]¶Send a message that was previously prepared with autobahn.websocket.protocol.WebSocketFactory.prepareMessage()
.
Parameters: | prepareMessage (Instance of autobahn.websocket.protocol.PreparedMessage .) – A previously prepared message. |
---|
sendPing
(payload=None)[source]¶Send a WebSocket ping to the peer.
A peer is expected to pong back the payload a soon as “practical”. When more than one ping is outstanding at a peer, the peer may elect to respond only to the last ping.
Parameters: | payload (bytes or None) – An (optional) arbitrary payload of length less than 126 octets. |
---|
onPing
(payload)[source]¶Callback fired when a WebSocket ping was received. A default implementation responds by sending a WebSocket pong.
Parameters: | payload (bytes) – Payload of ping (when there was any). Can be arbitrary, up to 125 octets. |
---|
autobahn.websocket.interfaces.
IWebSocketChannelFrameApi
[source]¶Bases: autobahn.websocket.interfaces.IWebSocketChannel
Frame-based API to a WebSocket channel.
onMessageBegin
(isBinary)[source]¶Callback fired when receiving of a new WebSocket message has begun.
Parameters: | isBinary (bool) – True if payload is binary, else the payload is UTF-8 encoded text. |
---|
onMessageFrame
(payload)[source]¶Callback fired when a complete WebSocket message frame for a previously begun WebSocket message has been received.
Parameters: | payload (list of bytes) – Message frame payload (a list of chunks received). |
---|
onMessageEnd
()[source]¶Callback fired when a WebSocket message has been completely received (the last WebSocket frame for that message has been received).
beginMessage
(isBinary=False, doNotCompress=False)[source]¶Begin sending a new WebSocket message.
Parameters: |
|
---|
sendMessageFrame
(payload, sync=False)[source]¶When a message has been previously begun, send a complete message frame in one go.
Parameters: |
|
---|
autobahn.websocket.interfaces.
IWebSocketChannelStreamingApi
[source]¶Bases: autobahn.websocket.interfaces.IWebSocketChannelFrameApi
Streaming API to a WebSocket channel.
onMessageFrameBegin
(length)[source]¶Callback fired when receiving a new message frame has begun. A default implementation will prepare to buffer message frame data.
Parameters: | length (int) – Payload length of message frame which is subsequently received. |
---|
onMessageFrameData
(payload)[source]¶Callback fired when receiving data within a previously begun message frame. A default implementation will buffer data for frame.
Parameters: | payload (bytes) – Partial payload for message frame. |
---|
onMessageFrameEnd
()[source]¶Callback fired when a previously begun message frame has been completely received. A default implementation will flatten the buffered frame data and fire onMessageFrame.
beginMessageFrame
(length)[source]¶Begin sending a new message frame.
Parameters: | length (int) – Length of the frame which is to be started. Must be less or equal 2^63. |
---|
sendMessageFrameData
(payload, sync=False)[source]¶Send out data when within a message frame (message was begun, frame was begun).
Note that the frame is automatically ended when enough data has been sent.
In other words, there is no endMessageFrame
, since you have begun the frame
specifying the frame length, which implicitly defined the frame end. This is different
from messages, which you begin and end explicitly , since a message can contain
an unlimited number of frames.
Parameters: | |
---|---|
Returns: | When the currently sent message frame is still incomplete, returns octets remaining to be sent. When the frame is complete, returns 0. Otherwise the amount of unconsumed data in payload argument is returned. |
Return type: |
autobahn.websocket.protocol.
createWsUrl
(hostname, port=None, isSecure=False, path=None, params=None)[source]¶Create a WebSocket URL from components.
Parameters: |
|
---|---|
Returns: | str – Constructed WebSocket URL. |
autobahn.websocket.protocol.
parseWsUrl
(url)[source]¶Parses as WebSocket URL into it’s components and returns a tuple (isSecure, host, port, resource, path, params).
isSecure is a flag which is True for wss URLs. host is the hostname or IP from the URL. port is the port from the URL or standard port derived from scheme (ws = 80, wss = 443). resource is the /resource name/ from the URL, the /path/ together with the (optional) /query/ component. path is the /path/ component properly unescaped. params is the /query) component properly unescaped and returned as dictionary.
Parameters: | url (str) – A valid WebSocket URL, i.e. ws://localhost:9000/myresource?param1=23¶m2=666 |
---|---|
Returns: | tuple – A tuple (isSecure, host, port, resource, path, params) |
autobahn.websocket.protocol.
ConnectionRequest
(peer, headers, host, path, params, version, origin, protocols, extensions)[source]¶Thin-wrapper for WebSocket connection request information provided in
autobahn.websocket.protocol.WebSocketServerProtocol.onConnect()
when
a WebSocket client want to establish a connection to a WebSocket server.
Constructor.
Parameters: |
|
---|
autobahn.websocket.protocol.
ConnectionResponse
(peer, headers, version, protocol, extensions)[source]¶Thin-wrapper for WebSocket connection response information provided in
autobahn.websocket.protocol.WebSocketClientProtocol.onConnect()
when
a WebSocket server has accepted a connection request by a client.
Constructor.
Parameters: |
|
---|
autobahn.websocket.protocol.
Timings
[source]¶Helper class to track timings by key. This class also supports item access, iteration and conversion to string.
track
(key)[source]¶Track elapsed for key.
Parameters: | key (str) – Key under which to track the timing. |
---|
autobahn.websocket.protocol.
WebSocketProtocol
[source]¶Protocol base class for WebSocket.
This class implements:
SUPPORTED_SPEC_VERSIONS
= [0, 10, 11, 12, 13, 14, 15, 16, 17, 18]¶WebSocket protocol spec (draft) versions supported by this implementation. Use of version 18 indicates RFC6455. Use of versions < 18 indicate actual draft spec versions (Hybi-Drafts). Use of version 0 indicates Hixie-76.
SUPPORTED_PROTOCOL_VERSIONS
= [0, 8, 13]¶WebSocket protocol versions supported by this implementation. For Hixie-76, there is no protocol version announced in HTTP header, and we just use the draft version (0) in this case.
SPEC_TO_PROTOCOL_VERSION
= {0: 0, 16: 13, 18: 13, 17: 13, 10: 8, 11: 8, 12: 8, 13: 13, 14: 13, 15: 13}¶Mapping from protocol spec (draft) version to protocol version. For Hixie-76, there is no protocol version announced in HTTP header, and we just use the pseudo protocol version 0 in this case.
PROTOCOL_TO_SPEC_VERSION
= {0: 0, 8: 12, 13: 18}¶Mapping from protocol version to the latest protocol spec (draft) version using that protocol version. For Hixie-76, there is no protocol version announced in HTTP header, and we just use the draft version (0) in this case.
DEFAULT_SPEC_VERSION
= 18¶Default WebSocket protocol spec version this implementation speaks: final RFC6455.
DEFAULT_ALLOW_HIXIE76
= False¶By default, this implementation will not allow to speak the obsoleted Hixie-76 protocol version. That protocol version has security issues, but is still spoken by some clients. Enable at your own risk! Enabling can be done by using setProtocolOptions() on the factories for clients and servers.
MESSAGE_TYPE_TEXT
= 1¶WebSocket text message type (UTF-8 payload).
MESSAGE_TYPE_BINARY
= 2¶WebSocket binary message type (arbitrary binary payload).
STATE_CLOSED
= 0¶STATE_CONNECTING
= 1¶STATE_CLOSING
= 2¶STATE_OPEN
= 3¶STATE_PROXY_CONNECTING
= 4¶SEND_STATE_GROUND
= 0¶SEND_STATE_MESSAGE_BEGIN
= 1¶SEND_STATE_INSIDE_MESSAGE
= 2¶SEND_STATE_INSIDE_MESSAGE_FRAME
= 3¶CLOSE_STATUS_CODE_NORMAL
= 1000¶Normal close of connection.
CLOSE_STATUS_CODE_GOING_AWAY
= 1001¶Going away.
CLOSE_STATUS_CODE_PROTOCOL_ERROR
= 1002¶Protocol error.
CLOSE_STATUS_CODE_UNSUPPORTED_DATA
= 1003¶Unsupported data.
CLOSE_STATUS_CODE_RESERVED1
= 1004¶RESERVED
CLOSE_STATUS_CODE_NULL
= 1005¶No status received. (MUST NOT be used as status code when sending a close).
CLOSE_STATUS_CODE_ABNORMAL_CLOSE
= 1006¶Abnormal close of connection. (MUST NOT be used as status code when sending a close).
CLOSE_STATUS_CODE_INVALID_PAYLOAD
= 1007¶Invalid frame payload data.
CLOSE_STATUS_CODE_POLICY_VIOLATION
= 1008¶Policy violation.
CLOSE_STATUS_CODE_MESSAGE_TOO_BIG
= 1009¶Message too big.
CLOSE_STATUS_CODE_MANDATORY_EXTENSION
= 1010¶Mandatory extension.
CLOSE_STATUS_CODE_INTERNAL_ERROR
= 1011¶The peer encountered an unexpected condition or internal error.
CLOSE_STATUS_CODE_TLS_HANDSHAKE_FAILED
= 1015¶TLS handshake failed, i.e. server certificate could not be verified. (MUST NOT be used as status code when sending a close).
CLOSE_STATUS_CODES_ALLOWED
= [1000, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011]¶Status codes allowed to send in close.
CONFIG_ATTRS_COMMON
= ['debug', 'debugCodePaths', 'logOctets', 'logFrames', 'trackTimings', 'allowHixie76', 'utf8validateIncoming', 'applyMask', 'maxFramePayloadSize', 'maxMessagePayloadSize', 'autoFragmentSize', 'failByDrop', 'echoCloseCodeReason', 'openHandshakeTimeout', 'closeHandshakeTimeout', 'tcpNoDelay', 'autoPingInterval', 'autoPingTimeout', 'autoPingSize']¶Configuration attributes common to servers and clients.
CONFIG_ATTRS_SERVER
= ['versions', 'webStatus', 'requireMaskedClientFrames', 'maskServerFrames', 'perMessageCompressionAccept', 'serveFlashSocketPolicy', 'flashSocketPolicy', 'allowedOrigins', 'allowedOriginsPatterns']¶Configuration attributes specific to servers.
CONFIG_ATTRS_CLIENT
= ['version', 'acceptMaskedServerFrames', 'maskClientFrames', 'serverConnectionDropTimeout', 'perMessageCompressionOffers', 'perMessageCompressionAccept']¶Configuration attributes specific to clients.
onOpen
()[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onOpen()
onMessageBegin
(isBinary)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onMessageBegin()
onMessageFrameBegin
(length)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onMessageFrameBegin()
onMessageFrameData
(payload)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onMessageFrameData()
onMessageFrameEnd
()[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onMessageFrameEnd()
onMessageFrame
(payload)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onMessageFrame()
onMessage
(payload, isBinary)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onMessage()
onPing
(payload)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onPing()
onPong
(payload)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onPong()
onClose
(wasClean, code, reason)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.onClose()
onCloseFrame
(code, reasonRaw)[source]¶Callback when a Close frame was received. The default implementation answers by sending a Close when no Close was sent before. Otherwise it drops the TCP connection either immediately (when we are a server) or after a timeout (when we are a client and expect the server to drop the TCP).
Modes: Hybi, Hixie
Parameters: |
|
---|
onServerConnectionDropTimeout
()[source]¶We (a client) expected the peer (a server) to drop the connection, but it didn’t (in time self.serverConnectionDropTimeout). So we drop the connection, but set self.wasClean = False.
Modes: Hybi, Hixie
onOpenHandshakeTimeout
()[source]¶We expected the peer to complete the opening handshake with to us. It didn’t do so (in time self.openHandshakeTimeout). So we drop the connection, but set self.wasClean = False.
Modes: Hybi, Hixie
onCloseHandshakeTimeout
()[source]¶We expected the peer to respond to us initiating a close handshake. It didn’t respond (in time self.closeHandshakeTimeout) with a close response frame though. So we drop the connection, but set self.wasClean = False.
Modes: Hybi, Hixie
onAutoPingTimeout
()[source]¶When doing automatic ping/pongs to detect broken connection, the peer did not reply in time to our ping. We drop the connection.
failConnection
(code=1001, reason='Going Away')[source]¶Fails the WebSocket connection.
Modes: Hybi, Hixie
protocolViolation
(reason)[source]¶Fired when a WebSocket protocol violation/error occurs.
Modes: Hybi, Hixie
Parameters: | reason (str) – Protocol violation that was encountered (human readable). |
---|---|
Returns: | bool – True, when any further processing should be discontinued. |
invalidPayload
(reason)[source]¶Fired when invalid payload is encountered. Currently, this only happens for text message when payload is invalid UTF-8 or close frames with close reason that is invalid UTF-8.
Modes: Hybi, Hixie
Parameters: | reason (str) – What was invalid for the payload (human readable). |
---|---|
Returns: | bool – True, when any further processing should be discontinued. |
setTrackTimings
(enable)[source]¶Enable/disable tracking of detailed timings.
Parameters: | enable (bool) – Turn time tracking on/off. |
---|
logRxOctets
(data)[source]¶Hook fired right after raw octets have been received, but only when self.logOctets == True.
Modes: Hybi, Hixie
logTxOctets
(data, sync)[source]¶Hook fired right after raw octets have been sent, but only when self.logOctets == True.
Modes: Hybi, Hixie
logRxFrame
(frameHeader, payload)[source]¶Hook fired right after WebSocket frame has been received and decoded, but only when self.logFrames == True.
Modes: Hybi
logTxFrame
(frameHeader, payload, repeatLength, chopsize, sync)[source]¶Hook fired right after WebSocket frame has been encoded and sent, but only when self.logFrames == True.
Modes: Hybi
sendData
(data, sync=False, chopsize=None)[source]¶Wrapper for self.transport.write which allows to give a chopsize. When asked to chop up writing to TCP stream, we write only chopsize octets and then give up control to select() in underlying reactor so that bytes get onto wire immediately. Note that this is different from and unrelated to WebSocket data message fragmentation. Note that this is also different from the TcpNoDelay option which can be set on the socket.
Modes: Hybi, Hixie
sendPreparedMessage
(preparedMsg)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendPreparedMessage()
processData
()[source]¶After WebSocket handshake has been completed, this procedure will do all subsequent processing of incoming bytes.
Modes: Hybi, Hixie
sendFrame
(opcode, payload='', fin=True, rsv=0, mask=None, payload_len=None, chopsize=None, sync=False)[source]¶Send out frame. Normally only used internally via sendMessage(), sendPing(), sendPong() and sendClose().
This method deliberately allows to send invalid frames (that is frames invalid per-se, or frames invalid because of protocol state). Other than in fuzzing servers, calling methods will ensure that no invalid frames are sent.
In addition, this method supports explicit specification of payload length. When payload_len is given, it will always write that many octets to the stream. It’ll wrap within payload, resending parts of that when more octets were requested The use case is again for fuzzing server which want to sent increasing amounts of payload data to peers without having to construct potentially large messages themselves.
Modes: Hybi
sendPing
(payload=None)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendPing()
sendPong
(payload=None)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendPong()
sendCloseFrame
(code=None, reasonUtf8=None, isReply=False)[source]¶Send a close frame and update protocol state. Note, that this is an internal method which deliberately allows not send close frame with invalid payload.
Modes: Hybi, Hixie
sendClose
(code=None, reason=None)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendClose()
beginMessage
(isBinary=False, doNotCompress=False)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.beginMessage()
beginMessageFrame
(length)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.beginMessageFrame()
sendMessageFrameData
(payload, sync=False)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendMessageFrameData()
sendMessageFrame
(payload, sync=False)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendMessageFrame()
sendMessage
(payload, isBinary=False, fragmentSize=None, sync=False, doNotCompress=False)[source]¶Implements autobahn.websocket.interfaces.IWebSocketChannel.sendMessage()
autobahn.websocket.protocol.
WebSocketFactory
[source]¶Mixin for
autobahn.websocket.protocol.WebSocketClientFactory
and
autobahn.websocket.protocol.WebSocketServerFactory
.
prepareMessage
(payload, isBinary=False, doNotCompress=False)[source]¶Prepare a WebSocket message. This can be later sent on multiple
instances of autobahn.websocket.WebSocketProtocol
using
autobahn.websocket.WebSocketProtocol.sendPreparedMessage()
.
By doing so, you can avoid the (small) overhead of framing the same payload into WebSocket messages multiple times when that same payload is to be sent out on multiple connections.
Parameters: |
|
---|---|
Returns: | obj – An instance of |
autobahn.websocket.protocol.
WebSocketServerProtocol
[source]¶Bases: autobahn.websocket.protocol.WebSocketProtocol
Protocol base class for WebSocket servers.
CONFIG_ATTRS
= ['debug', 'debugCodePaths', 'logOctets', 'logFrames', 'trackTimings', 'allowHixie76', 'utf8validateIncoming', 'applyMask', 'maxFramePayloadSize', 'maxMessagePayloadSize', 'autoFragmentSize', 'failByDrop', 'echoCloseCodeReason', 'openHandshakeTimeout', 'closeHandshakeTimeout', 'tcpNoDelay', 'autoPingInterval', 'autoPingTimeout', 'autoPingSize', 'versions', 'webStatus', 'requireMaskedClientFrames', 'maskServerFrames', 'perMessageCompressionAccept', 'serveFlashSocketPolicy', 'flashSocketPolicy', 'allowedOrigins', 'allowedOriginsPatterns']¶onConnect
(request)[source]¶Callback fired during WebSocket opening handshake when new WebSocket client connection is about to be established.
When you want to accept the connection, return the accepted protocol from list of WebSocket (sub)protocols provided by client or None to speak no specific one or when the client protocol list was empty.
You may also return a pair of (protocol, headers) to send additional HTTP headers, with headers being a dictionary of key-values.
Throw autobahn.websocket.http.HttpException
when you don’t want
to accept the WebSocket connection request.
Parameters: | request (instance of autobahn.websocket.protocol.ConnectionRequest ) – WebSocket connection request information. |
---|
succeedHandshake
(res)[source]¶Callback after onConnect() returns successfully. Generates the response for the handshake.
autobahn.websocket.protocol.
WebSocketServerFactory
(url=None, protocols=None, server='AutobahnPython/0.9.5', headers=None, externalPort=None, debug=False, debugCodePaths=False)[source]¶Bases: autobahn.websocket.protocol.WebSocketFactory
A protocol factory for WebSocket servers.
Create instance of WebSocket server factory.
Parameters: |
|
---|
protocol
¶The protocol to be spoken. Must be derived from autobahn.websocket.protocol.WebSocketServerProtocol
.
alias of WebSocketServerProtocol
isServer
= True¶Flag indicating if this factory is client- or server-side.
setSessionParameters
(url=None, protocols=None, server=None, headers=None, externalPort=None)[source]¶Set WebSocket session parameters.
Parameters: |
|
---|
setProtocolOptions
(versions=None, allowHixie76=None, webStatus=None, utf8validateIncoming=None, maskServerFrames=None, requireMaskedClientFrames=None, applyMask=None, maxFramePayloadSize=None, maxMessagePayloadSize=None, autoFragmentSize=None, failByDrop=None, echoCloseCodeReason=None, openHandshakeTimeout=None, closeHandshakeTimeout=None, tcpNoDelay=None, perMessageCompressionAccept=None, autoPingInterval=None, autoPingTimeout=None, autoPingSize=None, serveFlashSocketPolicy=None, flashSocketPolicy=None, allowedOrigins=None)[source]¶Set WebSocket protocol options used as defaults for new protocol instances.
Parameters: |
|
---|
autobahn.websocket.protocol.
WebSocketClientProtocol
[source]¶Bases: autobahn.websocket.protocol.WebSocketProtocol
Protocol base class for WebSocket clients.
CONFIG_ATTRS
= ['debug', 'debugCodePaths', 'logOctets', 'logFrames', 'trackTimings', 'allowHixie76', 'utf8validateIncoming', 'applyMask', 'maxFramePayloadSize', 'maxMessagePayloadSize', 'autoFragmentSize', 'failByDrop', 'echoCloseCodeReason', 'openHandshakeTimeout', 'closeHandshakeTimeout', 'tcpNoDelay', 'autoPingInterval', 'autoPingTimeout', 'autoPingSize', 'version', 'acceptMaskedServerFrames', 'maskClientFrames', 'serverConnectionDropTimeout', 'perMessageCompressionOffers', 'perMessageCompressionAccept']¶onConnect
(response)[source]¶Callback fired directly after WebSocket opening handshake when new WebSocket server connection was established.
Parameters: | response (instance of autobahn.websocket.protocol.ConnectionResponse ) – WebSocket connection response information. |
---|
failProxyConnect
(reason)[source]¶During initial explicit proxy connect, the server response indicates some failure and we drop the connection.
createHixieKey
()[source]¶Implements this algorithm:
http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76#page-21 Items 16 - 22
autobahn.websocket.protocol.
WebSocketClientFactory
(url=None, origin=None, protocols=None, useragent='AutobahnPython/0.9.5', headers=None, proxy=None, debug=False, debugCodePaths=False)[source]¶Bases: autobahn.websocket.protocol.WebSocketFactory
A protocol factory for WebSocket clients.
Create instance of WebSocket client factory.
Note that you MUST provide URL either here or set using
autobahn.websocket.WebSocketClientFactory.setSessionParameters()
before the factory is started.
Parameters: |
|
---|
protocol
¶The protocol to be spoken. Must be derived from autobahn.websocket.protocol.WebSocketClientProtocol
.
alias of WebSocketClientProtocol
isServer
= False¶Flag indicating if this factory is client- or server-side.
setSessionParameters
(url=None, origin=None, protocols=None, useragent=None, headers=None, proxy=None)[source]¶Set WebSocket session parameters.
Parameters: |
|
---|
setProtocolOptions
(version=None, allowHixie76=None, utf8validateIncoming=None, acceptMaskedServerFrames=None, maskClientFrames=None, applyMask=None, maxFramePayloadSize=None, maxMessagePayloadSize=None, autoFragmentSize=None, failByDrop=None, echoCloseCodeReason=None, serverConnectionDropTimeout=None, openHandshakeTimeout=None, closeHandshakeTimeout=None, tcpNoDelay=None, perMessageCompressionOffers=None, perMessageCompressionAccept=None, autoPingInterval=None, autoPingTimeout=None, autoPingSize=None)[source]¶Set WebSocket protocol options used as defaults for _new_ protocol instances.
Parameters: |
|
---|
autobahn.websocket.useragent.
lookupWsSupport
(ua, debug=True)[source]¶Lookup if browser supports WebSocket (Hixie76, Hybi10+, RFC6455) natively, and if not, whether the web-socket-js Flash bridge works to polyfill that.
Returns a tuple of booleans (ws_supported, needs_flash, detected)
where
ws_supported
: WebSocket is supportedneeds_flash
: Flash Bridge is needed for supportdetected
the code has explicitly mapped support
Parameters: | ua (str) – The browser user agent string as sent in the HTTP header, e.g. provided as flask.request.user_agent.string in Flask. |
---|---|
Returns: | tuple – A tuple (ws_supported, needs_flash, detected) . |
autobahn.websocket.utf8validator.
Utf8Validator
¶Bases: object
Incremental UTF-8 validator with constant memory consumption (minimal state).
Implements the algorithm “Flexible and Economical UTF-8 Decoder” by Bjoern Hoehrmann (http://bjoern.hoehrmann.de/utf-8/decoder/dfa/).
UTF8_ACCEPT
= 0¶UTF8_REJECT
= 1¶codepoint
¶i
¶state
¶decode
()¶Eat one UTF-8 octet, and validate on the fly.
Returns UTF8_ACCEPT when enough octets have been consumed, in which case self.codepoint contains the decoded Unicode code point.
Returns UTF8_REJECT when invalid UTF-8 was encountered.
Returns some other positive integer when more octets need to be eaten.
reset
()¶Reset validator to start new incremental UTF-8 decode/validation.
validate
()¶Incrementally validate a chunk of bytes provided as bytearray.
Will return a quad (valid?, endsOnCodePoint?, currentIndex, totalIndex).
As soon as an octet is encountered which renders the octet sequence invalid, a quad with valid? == False is returned. currentIndex returns the index within the currently consumed chunk, and totalIndex the index within the total consumed sequence that was the point of bail out. When valid? == True, currentIndex will be len(ba) and totalIndex the total amount of consumed bytes.