MCPcopy Index your code
hub / github.com/NativeScript/NativeScript / tryNext

Function tryNext

packages/vite/hmr/client/index.ts:959–1008  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

957 let idx = 0;
958
959 const tryNext = () => {
960 if (idx >= candidates.length) {
961 console.warn('[hmr-client] All WS candidates failed:', candidates.join(', '));
962 return;
963 }
964 const url = candidates[idx++];
965 try {
966 if (__NS_ENV_VERBOSE__) console.log('[hmr-client] Connecting to HMR WebSocket:', url);
967 const sock = new WebSocket(url);
968 hmrSocket = sock;
969 setHttpOriginForVite(deriveHttpOrigin(url));
970
971 let opened = false;
972 const timeout = setTimeout(() => {
973 if (!opened && sock.readyState !== WebSocket.OPEN) {
974 try {
975 sock.close();
976 } catch {}
977 if (VERBOSE) console.warn('[hmr-client] WS connect timeout, trying next…');
978 tryNext();
979 }
980 }, 3500);
981
982 sock.onopen = () => {
983 opened = true;
984 clearTimeout(timeout);
985 VERBOSE && console.log('[hmr-client] Connected to HMR WebSocket');
986 };
987 sock.onmessage = handleHmrMessage;
988 sock.onerror = (error: any) => {
989 clearTimeout(timeout);
990 console.warn('[hmr-client] WebSocket error:', (error && (error.message || error)) || error);
991 };
992 sock.onclose = (ev: any) => {
993 clearTimeout(timeout);
994 if (!opened) {
995 // immediate failure during connect → try another candidate
996 if (VERBOSE) console.warn('[hmr-client] WS close before open (code', ev?.code, '), trying next…');
997 tryNext();
998 } else {
999 if (VERBOSE) console.log('[hmr-client] WebSocket closed (code', ev?.code, '), will reconnect…');
1000 // try to reconnect with full candidate list again
1001 setTimeout(connectHmr, 1000);
1002 }
1003 };
1004 } catch (e) {
1005 console.warn('[hmr-client] Failed to connect WebSocket', e);
1006 tryNext();
1007 }
1008 };
1009
1010 tryNext();
1011}

Callers 1

connectHmrFunction · 0.85

Calls 8

setHttpOriginForViteFunction · 0.85
deriveHttpOriginFunction · 0.85
warnMethod · 0.80
joinMethod · 0.80
setTimeoutFunction · 0.50
clearTimeoutFunction · 0.50
logMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected