The Connection that owns this transport.
The wrapper element name whose children Connection unwraps before
dispatch. BOSH overloads it as a boolean toggle, hence the union.
Private helper function that makes sure all pending requests are aborted.
Optionaljid: stringOptional_condition: stringReport that the connect flow completed (resource bound, or legacy auth/session establishment finished). Sent with or without SM: the worker adopts the bound JID as the shared one, releases tabs parked on the handshake, and starts a fresh SM session itself when this stream's features advertised support.
The server-assigned full JID.
Private function to close the WebSocket.
Closes the socket if it is still open and deletes it
Private function called by Connection.connect
Creates a WebSocket for a connection and assigns Callbacks to it. Does nothing if there already is a WebSocket.
Private function called by Connection._connect_cb checks for stream:error
The received stanza.
Optionalpres: Element | Builder
This stanza will be sent before disconnecting.
Private function to disconnect. Just closes the Socket for WebSockets
Private function to check if the message queue is empty.
True, because WebSocket messages are send immediately after queueing.
Called on stream start/restart when no stream:features has been received.
Optionalcallback: (this: default) => voidCalled when the worker reports that the shared socket closed or died. Unlike a page-owned websocket this can arrive while this tab believes it is still connecting. The worker owns the socket, and e.g. its connection attempt to the server can fail. The base implementation ignores closes in that state (it only knows real CloseEvents), which would leave this tab stuck in CONNECTING forever, so fail the connection attempt instead: the embedder's reconnect logic takes it from there.
Optionale: string | CloseEvent
The close reason from the worker, or a close event.
Private timeout handler for handling non-graceful disconnection.
This does nothing for WebSockets
Private function to handle websockets errors.
The websocket error.
Private function called by Connection._onIdle sends all queued stanzas
Private function that handles the first connection messages.
On receiving an opening stream tag this callback replaces itself with the real message handler. On receiving a stream error the connection is terminated.
Private function to handle websockets messages.
This function parses each of the messages as if they are full documents. [TODO : We may actually want to use a SAX Push parser].
Since all XMPP traffic starts with <stream:stream version='1.0' xml:lang='en' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='3697395463' from='SERVER'>
The first stanza will always fail to be parsed.
Additionally, the seconds stanza will always be stream:features with the stream NS defined in the previous stanza, so we need to 'force' the inclusion of the NS in this stanza.
The websocket message event
Called by the worker when another tab sent a message or presence stanza over the shared connection. Handed to its own overridable hook — never into the inbound pipeline (_dataRecv), where it would hit stanza handlers, SM counting and xmlInput as if it were received traffic.
The serialized stanza.
Liveness probe from the worker. Answered from this message handler — which runs even when the browser throttles this tab's timers — so a merely-backgrounded tab never looks dead to the worker.
Called by the worker when this tab is promoted to primary after the previous primary went away. Same socket — no reconnect happens.
Optionaljid: string
The shared connection's JID.
Called by _onInitialMessage in order to replace itself with the general message handler. This method is overridden by WorkerWebsocket, which manages a websocket connection via a service worker and doesn't have direct access to the socket.
Reset the connection.
This function is called by the reset function of the Strophe Connection. Is not needed by WebSockets.
Called by the worker to assign this tab's role. A secondary shares the already-established session, so it must not treat inbound frames as its own connection handshake.
Optionaljid: string
The shared connection's JID.
Private part of the Connection.send function for WebSocket Just flushes the messages that are in the queue
Send an xmpp:restart stanza.
Called by the worker when a fresh SM session was established.
The SM-ID.
The server's preferred maximum resumption time.
The JID that was bound when the session was enabled.
Called by the worker when resumption failed: the primary falls back
to binding a resource on this same stream (the salvaged queue stays
in the worker and is re-sent after the next
Ask the worker to negotiate XEP-0198 for the freshly authenticated
stream (§2.3): it sends
Called by the worker when it has no resumable state: continue the connect flow with resource binding.
Called by the worker when the previous session was resumed. Every tab
adopts the originally bound JID; the primary — which drove the connect
flow — additionally restores the connection state and emits CONNECTED
(the same actions a non-worker connection applies on
The worker's boundJid.
Optionalid: string
The SM-ID of the resumed session.
Optionalmax: number
The server's preferred maximum resumption time.
PrivateFunction _streamWrap
Private helper function to wrap a stanza in a
Helper class that handles a websocket connection inside a shared worker.