MCPcopy
hub / github.com/socketio/socket.io / _probe

Method _probe

packages/engine.io-client/lib/socket.ts:1006–1124  ·  view source on GitHub ↗

* Probes a transport. * * @param {String} name - transport name * @private

(name: string)

Source from the content-addressed store, hash-verified

1004 * @private
1005 */
1006 private _probe(name: string) {
1007 debug('probing transport "%s"', name);
1008 let transport = this.createTransport(name);
1009 let failed = false;
1010
1011 SocketWithoutUpgrade.priorWebsocketSuccess = false;
1012
1013 const onTransportOpen = () => {
1014 if (failed) return;
1015
1016 debug('probe transport "%s" opened', name);
1017 transport.send([{ type: "ping", data: "probe" }]);
1018 transport.once("packet", (msg) => {
1019 if (failed) return;
1020 if ("pong" === msg.type && "probe" === msg.data) {
1021 debug('probe transport "%s" pong', name);
1022 this.upgrading = true;
1023 this.emitReserved("upgrading", transport);
1024 if (!transport) return;
1025 SocketWithoutUpgrade.priorWebsocketSuccess =
1026 "websocket" === transport.name;
1027
1028 debug('pausing current transport "%s"', this.transport.name);
1029 this.transport.pause(() => {
1030 if (failed) return;
1031 if ("closed" === this.readyState) return;
1032 debug("changing transport and sending upgrade packet");
1033
1034 cleanup();
1035
1036 this.setTransport(transport);
1037 transport.send([{ type: "upgrade" }]);
1038 this.emitReserved("upgrade", transport);
1039 transport = null;
1040 this.upgrading = false;
1041 this.flush();
1042 });
1043 } else {
1044 debug('probe transport "%s" failed', name);
1045 const err = new Error("probe error");
1046 // @ts-ignore
1047 err.transport = transport.name;
1048 this.emitReserved("upgradeError", err);
1049 }
1050 });
1051 };
1052
1053 function freezeTransport() {
1054 if (failed) return;
1055
1056 // Any callback called by transport should be ignored since now
1057 failed = true;
1058
1059 cleanup();
1060
1061 transport.close();
1062 transport = null;
1063 }

Callers 2

onOpenMethod · 0.95
socket.io.jsFile · 0.80

Calls 3

debugFunction · 0.85
createTransportMethod · 0.45
openMethod · 0.45

Tested by

no test coverage detected