* @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
(response, parsedExtensions)
| 16130 | * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol |
| 16131 | */ |
| 16132 | #onConnectionEstablished(response, parsedExtensions) { |
| 16133 | this.#handler.socket = response.socket; |
| 16134 | const maxFragments = this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments; |
| 16135 | const maxPayloadSize = this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize; |
| 16136 | const parser = new ByteParser(this.#handler, parsedExtensions, { |
| 16137 | maxFragments, |
| 16138 | maxPayloadSize |
| 16139 | }); |
| 16140 | parser.on("drain", () => this.#handler.onParserDrain()); |
| 16141 | parser.on("error", (err) => this.#handler.onParserError(err)); |
| 16142 | this.#parser = parser; |
| 16143 | this.#sendQueue = new SendQueue(response.socket); |
| 16144 | this.#handler.readyState = states.OPEN; |
| 16145 | const extensions = response.headersList.get("sec-websocket-extensions"); |
| 16146 | if (extensions !== null) { |
| 16147 | this.#extensions = extensions; |
| 16148 | } |
| 16149 | const protocol = response.headersList.get("sec-websocket-protocol"); |
| 16150 | if (protocol !== null) { |
| 16151 | this.#protocol = protocol; |
| 16152 | } |
| 16153 | fireEvent("open", this); |
| 16154 | if (channels.open.hasSubscribers) { |
| 16155 | const headers = response.headersList.entries; |
| 16156 | channels.open.publish({ |
| 16157 | address: getSocketAddress(response.socket), |
| 16158 | protocol: this.#protocol, |
| 16159 | extensions: this.#extensions, |
| 16160 | websocket: this, |
| 16161 | handshakeResponse: { |
| 16162 | status: response.status, |
| 16163 | statusText: response.statusText, |
| 16164 | headers |
| 16165 | } |
| 16166 | }); |
| 16167 | } |
| 16168 | } |
| 16169 | #onMessage(type, data) { |
| 16170 | if (this.#handler.readyState !== states.OPEN) { |
| 16171 | return; |
no test coverage detected