MCPcopy
hub / github.com/vitejs/vite / waitForSuccessfulPingInternal

Function waitForSuccessfulPingInternal

packages/vite/src/client/client.ts:468–529  ·  view source on GitHub ↗
(
  socketUrl: string,
  visibilityManager: VisibilityManager,
  ms = 1000,
)

Source from the content-addressed store, hash-verified

466}
467
468async function waitForSuccessfulPingInternal(
469 socketUrl: string,
470 visibilityManager: VisibilityManager,
471 ms = 1000,
472) {
473 function wait(ms: number) {
474 return new Promise((resolve) => setTimeout(resolve, ms))
475 }
476
477 async function ping() {
478 try {
479 const socket = new WebSocket(socketUrl, 'vite-ping')
480 return new Promise<boolean>((resolve) => {
481 function onOpen() {
482 resolve(true)
483 close()
484 }
485 function onError() {
486 resolve(false)
487 close()
488 }
489 function close() {
490 socket.removeEventListener('open', onOpen)
491 socket.removeEventListener('error', onError)
492 socket.close()
493 }
494 socket.addEventListener('open', onOpen)
495 socket.addEventListener('error', onError)
496 })
497 } catch {
498 return false
499 }
500 }
501
502 function waitForWindowShow(visibilityManager: VisibilityManager) {
503 return new Promise<void>((resolve) => {
504 const onChange = (newVisibility: DocumentVisibilityState) => {
505 if (newVisibility === 'visible') {
506 resolve()
507 visibilityManager.listeners.delete(onChange)
508 }
509 }
510 visibilityManager.listeners.add(onChange)
511 })
512 }
513
514 if (await ping()) {
515 return
516 }
517 await wait(ms)
518
519 while (true) {
520 if (visibilityManager.currentState === 'visible') {
521 if (await ping()) {
522 break
523 }
524 await wait(ms)
525 } else {

Callers 2

waitForSuccessfulPingFunction · 0.85
pingWorkerContentMainFunction · 0.85

Calls 3

pingFunction · 0.85
waitFunction · 0.85
waitForWindowShowFunction · 0.85

Tested by

no test coverage detected