Contents

Web Worker API

Web worker

Web Worker λŠ” 메인 μŠ€λ ˆλ“œμ™€ λΆ„λ¦¬λœ λ³„λ„μ˜ λ°±κ·ΈλΌμš΄λ“œ μŠ€λ ˆλ“œμ—μ„œ 슀크립트λ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” κΈ°μˆ μ΄λ‹€. UI μŠ€λ ˆλ“œμ™€λŠ” λ³„κ°œμ˜ μŠ€λ ˆλ“œλ₯Ό μ‹€ν–‰μ‹œμΌœ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ°©ν•΄ν•˜μ§€μ•Šκ³  μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.

Web worker scope

  • Web workerλŠ” 메인 μŠ€λ ˆλ“œμ™€ λ³„λ„μ˜ worker μŠ€λ ˆλ“œλ₯Ό κ°–λŠ”λ‹€.
  • 메인 μŠ€λ ˆλ“œμ—μ„œ window κ°μ²΄λŠ” GlobalScope μ΄μ§€λ§Œ worker μŠ€λ ˆλ“œμ—μ„œλŠ” λ³„λ„μ˜ μŠ€μ½”ν”„ λ²”μœ„λ₯Ό κ°–λŠ”λ‹€.
  • worker μŠ€λ ˆλ“œλŠ” 메인 μŠ€λ ˆλ“œ window 객체에 μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” κΆŒν•œμ΄ μ—†κΈ° λ•Œλ¬Έμ— window의 λ©”μ„œλ“œλ‚˜ DOM을 μ§μ ‘μ μœΌλ‘œ μ œμ–΄ν•  수 μ—†λ‹€. window 의 DOM에 μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œλŠ” postMessage() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ 메세지λ₯Ό 보내고 onmessage 이벀트 ν•Έλ“€λŸ¬λ₯Ό 톡해 μ œμ–΄ν•  수 μžˆλ‹€.

Worker μ’…λ₯˜

  • Dedicated workers : 단일 슀크립트 ν™˜κ²½μ„ μ΄μš©ν•˜λŠ” worker. 처음 workerλ₯Ό μƒμ„±ν•œ context μ˜μ—­μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
  • Shared workers : workerκ°€ 같은 도메인 내에 μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  Threadμ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. λ‹€λ₯Έ μ»¨ν…μŠ€νŠΈ (iframe, λ‹€λ₯Έ νƒ­ λ“±)μ—μ„œλ„ 접근이 κ°€λŠ₯ν•˜λ‹€. scriptμ—μ„œ worker와 port λ₯Ό ν†΅ν•΄μ„œ ν†΅μ‹ ν•œλ‹€.
  • Service workers : λΈŒλΌμš°μ €κ°€ λ°±κ·ΈλΌμš΄λ“œ μ˜μ—­μ—μ„œ μ‹€ν–‰ν•˜λŠ” 슀크립트둜 Service worker의 생λͺ…μ£ΌκΈ°λŠ” μ›ΉνŽ˜μ΄μ§€μ™€λŠ” λ³„κ°œλ‘œ μž‘λ™ν•œλ‹€. μ›ΉνŽ˜μ΄μ§€ λ˜λŠ” μ‚¬μš©μž μΈν„°λž™μ…˜μ΄ ν•„μš”ν•˜μ§€ μ•ŠλŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆλ‹€. μ˜€ν”„λΌμΈ ν™˜κ²½, ν‘Έμ‹œ μ•Œλ¦Ό, λ°±κ·ΈλΌμš΄λ“œ 동기화 λ“±μ˜ κΈ°λŠ₯을 μ§€μ›ν•œλ‹€.

Service Worker

  • Web worker의 ν•œ μ’…λ₯˜μ΄λ‹€. μ›Ή νŽ˜μ΄μ§€μ˜ 라이프 μ‚¬μ΄ν΄κ³ΌλŠ” λ³„κ°œλ‘œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— μ›ΉνŽ˜μ΄μ§€κ°€ λ‹«ν˜€λ„ μžλ™μœΌλ‘œ λΉ„ν™œμ„±ν™” λ˜μ§€ μ•ŠλŠ”λ‹€.
  • μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜, λΈŒλΌμš°μ € 및 λ„€νŠΈμ›Œν¬ 사이에 proxy μ„œλ²„ 역할을 ν•œλ‹€. 주둜 μ˜€ν”„λΌμΈ, ν‘Έμ‹œ μ•Œλ¦Ό 및 λ°±κ·ΈλΌμš΄λ“œ 동기화 APIλ₯Ό μœ„ν•΄ μ‚¬μš©ν•œλ‹€.
  • λ³΄μ•ˆμƒμ˜ 이유둜 localhost μ΄μ™Έμ—λŠ” HTTPS 톡신을 ν•΄μ•Όν•œλ‹€.
  • multi-threading 의 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ 것이 μ•„λ‹ˆλ―€λ‘œ λͺ‡κ°€μ§€ κΈ°λŠ₯듀이 μ œν•œλ˜μ–΄ μžˆλ‹€. EventSource λ‚˜WebSocket κΈ°λŠ₯도 μ œν•œλ˜μ–΄ μžˆλ‹€.