Submit Search
Upload
Service Worker 201 (한국어)
•
10 likes
•
2,183 views
Chang W. Doh
Follow
GDG DevFest 2016 Seoul
Read less
Read more
Technology
Report
Share
Report
Share
1 of 61
Download now
Download to read offline
Recommended
Service Worker 101 (한국어)
Service Worker 101 (한국어)
Chang W. Doh
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
leejungwang
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
sung ki choi
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
sung ki choi
Cooking jquery
Cooking jquery
JinKwon Lee
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
Recommended
Service Worker 101 (한국어)
Service Worker 101 (한국어)
Chang W. Doh
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
leejungwang
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
sung ki choi
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
sung ki choi
Cooking jquery
Cooking jquery
JinKwon Lee
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
WebFrameworks
Vue SSR vs Prerender
Vue SSR vs Prerender
Changwan Jun
[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overview
NAVER D2
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
흥래 김
make hybrid app.
make hybrid app.
jiseob kim
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
우영 주
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
Chang W. Doh
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
Jay Park
Meteor 0.3.6 Preview
Meteor 0.3.6 Preview
Juntai Park
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
JinKwon Lee
Single-page Application
Single-page Application
Sangmin Yoon
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
Woo Yeong Choi
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
redribbon1307
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XpressEngine
크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법
Gihyo Joshua Jang
JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)
지수 윤
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
JeongHun Byeon
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
jeong seok yang
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
Chang W. Doh
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
종훈 박
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
Chang W. Doh
Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)
jungkees
More Related Content
What's hot
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
WebFrameworks
Vue SSR vs Prerender
Vue SSR vs Prerender
Changwan Jun
[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overview
NAVER D2
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
흥래 김
make hybrid app.
make hybrid app.
jiseob kim
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
우영 주
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
Chang W. Doh
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
Jay Park
Meteor 0.3.6 Preview
Meteor 0.3.6 Preview
Juntai Park
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
JinKwon Lee
Single-page Application
Single-page Application
Sangmin Yoon
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
Woo Yeong Choi
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
redribbon1307
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XpressEngine
크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법
Gihyo Joshua Jang
JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)
지수 윤
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
JeongHun Byeon
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
jeong seok yang
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
Chang W. Doh
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
종훈 박
What's hot
(20)
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Vue SSR vs Prerender
Vue SSR vs Prerender
[Naver d2]html5 canvas overview
[Naver d2]html5 canvas overview
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
make hybrid app.
make hybrid app.
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
[토크아이티] 프런트엔드 개발 시작하기 저자 특강
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
Meteor 0.3.6 Preview
Meteor 0.3.6 Preview
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
Single-page Application
Single-page Application
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법
JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
Viewers also liked
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
Chang W. Doh
Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)
jungkees
[1C1]Service Workers
[1C1]Service Workers
NAVER D2
GDG DevFest 2014 - 코드 없이 오픈소스 기여하기: HTML5Rocks/KO 번역 야사
GDG DevFest 2014 - 코드 없이 오픈소스 기여하기: HTML5Rocks/KO 번역 야사
Chang W. Doh
초보 개발자의 커뮤니티 입문기
초보 개발자의 커뮤니티 입문기
Min Jae Kwon
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end development
정윤 김
WebRTC in 2014
WebRTC in 2014
Lee WonJae
[Gsc2014 spring(9)]naver d2 소개 (gsc2014)
[Gsc2014 spring(9)]naver d2 소개 (gsc2014)
VentureSquare
Google Code Jam 2017 소개
Google Code Jam 2017 소개
Startlink
React Redux React Native
React Redux React Native
Leonardo YongUk Kim
Service Workers for Performance
Service Workers for Performance
Patrick Meenan
Redis trouble shooting
Redis trouble shooting
DaeMyung Kang
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab
NAVER D2
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
Kim Hunmin
블로그 주도 개발
블로그 주도 개발
JeongHun Byeon
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스
NAVER D2
최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기
Hyeonjin Cho
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
승빈이네 공작소
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
승빈이네 공작소
납땜하는 개발자 이야기 @Tech판교
납땜하는 개발자 이야기 @Tech판교
Lee Ji Eun
Viewers also liked
(20)
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
Service workers 기초 및 활용 (Korean)
Service workers 기초 및 활용 (Korean)
[1C1]Service Workers
[1C1]Service Workers
GDG DevFest 2014 - 코드 없이 오픈소스 기여하기: HTML5Rocks/KO 번역 야사
GDG DevFest 2014 - 코드 없이 오픈소스 기여하기: HTML5Rocks/KO 번역 야사
초보 개발자의 커뮤니티 입문기
초보 개발자의 커뮤니티 입문기
Hitchhiker's guide to the front end development
Hitchhiker's guide to the front end development
WebRTC in 2014
WebRTC in 2014
[Gsc2014 spring(9)]naver d2 소개 (gsc2014)
[Gsc2014 spring(9)]naver d2 소개 (gsc2014)
Google Code Jam 2017 소개
Google Code Jam 2017 소개
React Redux React Native
React Redux React Native
Service Workers for Performance
Service Workers for Performance
Redis trouble shooting
Redis trouble shooting
[D2 fest 2014]yobi hands on lab
[D2 fest 2014]yobi hands on lab
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
웹 프론트엔드 개발자의 얕고 넓은 Rx 이야기
블로그 주도 개발
블로그 주도 개발
5.yobi를 활용한 개발자 협업 및 배포 프로세스
5.yobi를 활용한 개발자 협업 및 배포 프로세스
최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
납땜하는 개발자 이야기 @Tech판교
납땜하는 개발자 이야기 @Tech판교
Similar to Service Worker 201 (한국어)
드래그홈2010홈페이지제안서
드래그홈2010홈페이지제안서
draghome
드래그홈2013표준제안서
드래그홈2013표준제안서
draghome
2015 oce specification
2015 oce specification
uEngine Solutions
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
DataUs
드래그홈 표준제안서 2014
드래그홈 표준제안서 2014
draghome
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은
현진 김
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
Rhio Kim
Open hab&webapp.net
Open hab&webapp.net
Tae Young Lee
Phonegap research for bada kyubongcho
Phonegap research for bada kyubongcho
웹데브모바일
모듈시스템과 webpack
모듈시스템과 webpack
DataUs
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
미래웹기술연구소 (MIRAE WEB)
Weblockly 소개자료
Weblockly 소개자료
Kay Sung Hyuk
Data-binding AngularJS
Data-binding AngularJS
EunYoung Kim
최근 Javascript framework 조사
최근 Javascript framework 조사
Kichul Jung
Front end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park
13.code split
13.code split
Daniel Lim
모바일 웹앱 프로그래밍 과정
모바일 웹앱 프로그래밍 과정
Kenu, GwangNam Heo
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Bansook Nam
Node.js 시작하기
Node.js 시작하기
Huey Park
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
효근 박
Similar to Service Worker 201 (한국어)
(20)
드래그홈2010홈페이지제안서
드래그홈2010홈페이지제안서
드래그홈2013표준제안서
드래그홈2013표준제안서
2015 oce specification
2015 oce specification
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
드래그홈 표준제안서 2014
드래그홈 표준제안서 2014
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
웹 소프트웨어 시대의 새로운 롤(role) 모델, 자바스크립트
Open hab&webapp.net
Open hab&webapp.net
Phonegap research for bada kyubongcho
Phonegap research for bada kyubongcho
모듈시스템과 webpack
모듈시스템과 webpack
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Weblockly 소개자료
Weblockly 소개자료
Data-binding AngularJS
Data-binding AngularJS
최근 Javascript framework 조사
최근 Javascript framework 조사
Front end dev 2016 & beyond
Front end dev 2016 & beyond
13.code split
13.code split
모바일 웹앱 프로그래밍 과정
모바일 웹앱 프로그래밍 과정
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Node.js 시작하기
Node.js 시작하기
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
More from Chang W. Doh
Exploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively app
Chang W. Doh
Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가
Chang W. Doh
Hey Kotlin, How it works?
Hey Kotlin, How it works?
Chang W. Doh
Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요
Chang W. Doh
introduction to Web Assembly
introduction to Web Assembly
Chang W. Doh
PWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - Keynote
Chang W. Doh
PWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPS
Chang W. Doh
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나
Chang W. Doh
Natively Web App & Service Worker
Natively Web App & Service Worker
Chang W. Doh
Service Worker 201 (en)
Service Worker 201 (en)
Chang W. Doh
Service Worker 101 (en)
Service Worker 101 (en)
Chang W. Doh
What is next for the web
What is next for the web
Chang W. Doh
Instant and offline apps with Service Worker
Instant and offline apps with Service Worker
Chang W. Doh
Chrome enchanted 2015
Chrome enchanted 2015
Chang W. Doh
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
Chang W. Doh
SOSCON 2014: 문서 기반의 오픈소스 기여하기
SOSCON 2014: 문서 기반의 오픈소스 기여하기
Chang W. Doh
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
Chang W. Doh
Cache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
Chang W. Doh
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
More from Chang W. Doh
(20)
Exploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively app
Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가
Hey Kotlin, How it works?
Hey Kotlin, How it works?
Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요
introduction to Web Assembly
introduction to Web Assembly
PWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPS
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나
Natively Web App & Service Worker
Natively Web App & Service Worker
Service Worker 201 (en)
Service Worker 201 (en)
Service Worker 101 (en)
Service Worker 101 (en)
What is next for the web
What is next for the web
Instant and offline apps with Service Worker
Instant and offline apps with Service Worker
Chrome enchanted 2015
Chrome enchanted 2015
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
SOSCON 2014: 문서 기반의 오픈소스 기여하기
SOSCON 2014: 문서 기반의 오픈소스 기여하기
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
Cache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Service Worker 201 (한국어)
1.
서비스워커201 @cwdoh, GDE for
Web 1
2.
Remind 101 아직보지못하셨다면여기를살펴보세요. 2
3.
자바스크립트코드는UI 스레드상에서동작합니다. 즉, 여러분의코드는항상 모든렌더링과
상호작용을블록하며, (웹페이지가) 로딩되어있는동안만스크립트가 실행됩니다. 3
4.
웹워커와공용(Shared) 워커는브라우저의기능 스레드와유사하게 스크립트실행합니다. 백그라운드에서 메세지전달메커니즘을기반으로 특히,
Shared Worker 는여러브라우징컨텍스트로부터액세스가 가능 합니다. 4
5.
웹워커의기본규칙 전용의글로벌스코프 DOM에직접액세스불가 window 스코프의메소드와속성들을모두사용할수는없음 5
6.
서비스워커 어플리케이션이영속적인백그라운드처리의이점을가질수있도록하 며, 오프라인상태에서도웹어플리케이션의구동이가능하도록하는기 능을포함하고 있습니다. 6
7.
서비스워커역시워커의한종류 그러나, 영속적인백그라운드처리를위해 이벤트‑드리븐모델기반 설치, 버전시스템,
업그레이드와같은관리기능제공 다른규격들에대한포괄적인진입점제공 7
8.
비교 전용(Dedicated)/공용워커서비스워커 8
9.
전용및공용워커: 런타임 , 생성 ,
브라우징 콘텍스트 런타임에생성가능한스레드와유사 런타임에워커를생성하고 조작가능 페이지로딩되고 생성된뒤에만사용가능 페이지가 새로로딩될떄마다새로생성하여사용해야함 9
10.
서비스워커: 지속성 , 설치 ,
브라우저 시스템‑즉, 브라우저‑에설치되는데몬(Daemon)과 유사 웹페이지및브라우저의생명주기와는무관 시스템에서버전관리를위한업데이트기능제공 원격 푸시알림, 백그라운드동기화등에대한진입점으로적합 10
11.
기억하세요! 지속적인백그라운드처리는서비스워커의목적이며, 이점이서비스워커 의모든메커니즘을결정합니다. 11
12.
Service Worker ❤
HTTPS 중간자 공격(man‐in‐the‐middle‐attack) 의방지가 목적이지만, 127.0.0.1 즉, localhost 에서는SSL 인증이없이서비스워커의개 발및모듈테스팅이가능합니다. 12
13.
Dive into 201 몸풀기Warm‑up 오프라인에서의동작 웹앱메니페스트를이용한바로가기의설치 푸시알림 13
14.
몸풀기 14
15.
메세지전달 기억하시나요? 워커와상호작용하기 위한방법은 메세지 입니다.
:) .postMessage() .onmessage 15
16.
클라이언트에서워커로의메세지전달 index.html navigator.serviceWorker.controller .postMessage('hello, worker!'); sw.js // 페이지로부터 메세지를 포스팅할 때 발생하는 이벤트입니다. self.addEventListener('message', e => { console.log('Worker got: ' + e.data); }); 16
17.
워커로부터클라이언트로의메세지전달 navigator.serviceWorker .addEventListener('message', e => { console.log('page got: ' + e.data); }); sw.js self.addEventListener('message', e => { // post Message to source client e.source.postMessage('hello, page!'); }); 17
18.
serviceWorker.register() 서비스워커모듈의등록및 등록 결과 반환 18
19.
쉬운사용예 navigator.serviceWorker.register('/sw.js') // promise!! .then(function(registration) { // 등록 정보가 전달됩니다. }); 19
20.
scope 옵션활용 서비스워커가 동작할 url의 범위 정의 var options = { scope: './statics' }; navigator.serviceWorker.register('/sw.js', options) .then(function(registration) { // getting registeration info }); 20
21.
importScripts() 동기적인방식으로하나이상의스크립트를워커내로로딩 // loading single script self.importScripts('perfmatters.js'); // import script for arithmetic operation :) importScripts('add.js', 'minus.js', 'mult.js', 'divide.js'); 21
22.
그 외의주요메소드및속성 .getRegistration() .getRegistrations() .ready .controller 22
23.
오프라인에서의동작 여러분만의공룡을만들수있습니다! :‑p 23
24.
오프라인웹앱구현을위해학습할내용 1. Caches 를사용한캐시구현 2. .waitUntil() 을통한이벤트의생명주기
연장 3. fetch 이벤트를통한네트워크프록시구현 24
25.
Cache Storage Cache를위한저장소인터페이스. 모든API는 Promise 객체 를반환. .match() .has() .open() .delete() .keys() 25
26.
마스터경로내에저장된Named 캐시의예 CacheStorages │ ├── ServiceWorker_A │ ├── cache.1 │ ├── cache.2 │ └── cache.3 │ └── ServiceWorker_B ├── cache.1 ├── cache.2 └── cache.3 26
27.
.waitUntil() _현재상태_를연장. install 상태이전의 installing 상태 activate 상태이전의 activating 상태 27
28.
처음서비스워커가 설치되면모든리소스를다운로드하는코드 self.addEventListener('install', function(event) { predownloadAssets().then(function() { console.log('finished downloading awesome resoures.'); }); }); 28
29.
이슈: 다운로드가 완료되기
전에서비스워커가 활성화(activated) 29
30.
해결: 필요한동작이끝나기 전까지현재상태를연장!!
:) self.addEventListener('install', function(event) { // waitUntil()을 사용하여 `install` 상태를 연장 event.waitUntil( predownloadAssets().then(function() { console.log('finished downloading awesome resoures.'); }) ); }); 30
31.
.waitUntil() 은주어진Promise 객체가 처리될때까지현재이벤트 상태를연장합니다. 31
32.
.onfetch 브라우저가 리소스를fetch할때마다발생하는이벤트핸들러. 32
33.
FetchEvent .onfetch 에전달되는인자 요청및완료결과에대한정보를포함 .respondWith() 를사용하여원하는응답을되돌릴수있음 33
34.
.respondWith() 주어진 응답 생성 코드 로부터생성된응답을원래요청된곳(일반적으로 페이지)으로전달합니다. self.addEventListener('fetch', function(event) { // custom response with response‐generating‐code event.respondWith( // response like typical fetch‐response model fetch(event.request) .then(function(res) { return res; }).catch(function(error) { throw error; }) ); }); 34
35.
오프라인샘플코드 install 이벤트를이용한리소스의prefetch fetct 이벤트를사용한네트워크프록시 35
36.
웹앱매니페스트를활용한바로가기 설치 AndroidManifest.xml 나 .plist 를들어보셨나요> 36
37.
웹앱매니페스트 JSON 기반의매니페스트파일은_어플리케이션이름, 설명,
저작자, 아 이콘링크, 오리엔테이션이나디스플레이모드_와같은웹앱과 관련된 메타데이터를모아서저장할장소를개발자에게 제공한다. 37
38.
웹앱매니페스트의기능 실제로딩된페이지리소스와의상호작용대신 메타데이터를가진단일JSON 파일로부터 웹앱을관리하기 위한앱정보의조회하는기능제공 38
39.
사용방법 1. short_name , name ,
icons 등의정보가 담긴 매니페스트파일작성 { "short_name": "My superapp", ... } 2. 작성된파일을 <link> 를통해지정 <link rel="manifest" href="YOUR_MANIFEST_URL"> 39
40.
홈화면에추가(Add to homescreen) 웹앱매니페스트는사이트북마크를디바이스홈화면에저장하는기능 을제공합니다. 40
41.
앱과 유사하게 바로가기를설치하고,
그로부터실행 41
42.
웹앱매니페스트를통해로딩없이앱정보조회가능 홈화면상에앱아이콘과 이름표시 설치아이콘의클릭을통해원하는URL을실행 42
43.
코드 manifest.json { "name": "나의 대박 웹앱", "short_name": "HelloWorld", "start_url": ".", "display": "standalone", "icons": [{ "src": "images/touch/homescreen48.png", "sizes": "48x48", "type": "image/png" }, // ...웹앱에 대해 원하는 정보를 추가 } 43
44.
index.html <head> ... <title>나의 대박 웹앱</title> ... <link rel="manifest" href="manifest.json"> ... </head> 44
45.
실행스타일정의 웹앱 매니페스트 를사용하여디스플레이형태나페이지의방향등을설 정할수있습니다. 더자세한정보는여기를참조하세요. { // 풀스크린 모드, UI를 표시하려면 "browser" 사용 "display": "standalone", // 특정 방향으로 디스플레이하는 것을 강제 "orientation": "landscape", // 전체 사이트에서 적용될 UI(주소창 등)에 대한 테마 색상 정의 "theme_color": "#2196F3" } 45
46.
웹앱설치배너 자동으로사용자에게 홈화면에 설치 를질의 46
47.
47
48.
요구사항 페이지는반드시다음속성을가진 매니페스트 파일 를링크 short_name name 144x144 png icon
(mime type: image/png) start_url 서비스 워커 등록 HTTPS 지원 두번이상방문 단, 각 방문사이의시간은5분이상이어야함 48
49.
chrome://flags 를통해테스트설정가능 방문빈도를무시하려면 #bypass‐app‐banner‐engagement‐checks 설정 데스크탑에서의테스트를위해서 #enable‐add‐to‐shelf 설정 49
50.
예제: manifest.json { "name": "My super powered Web App", "short_name": "HelloWorld", "start_url": ".", "display": "standalone", "icons": [{ "src": "images/touch/homescreen48.png", "sizes": "48x48", "type": "image/png" }, // ...awesome data to define your web app ], "related_applications": [{ "platform": "web" }, { "platform": "play", "url": "https://play.goo../details?id=com.android.chrome" }] } 50
51.
원격 푸시알림 A long
time ago in a galaxy far, far away...there are spams 51
52.
원격 푸시 알림 을구현하기 위해배울것들 1. 푸시서비스에액세스하기
위한 Push manager 2. 푸시등록정보를다루는 Push subscription 3. 푸시이벤트를다루는 Push event 4. 전달된데이터를다루기 위한 Push message data 52
53.
동작흐름 1. 등록: 푸시서비스를통해푸시메세지의구독 2.
전달: 구독시할당받은엔드포인트정보를서비스서버에전달 3. 발송: 서비스에서등록된엔드포인트로푸시메세지발송 4. 조회: 브라우저는주기적으로구독하고 있는엔드포인트조회 5. 수신: 푸시메세지데이터를다운로드 6. 이벤트발생: 수신된푸시데이터를서비스워커에이벤트로전달 53
54.
source: Web Fundamentals 54
55.
Push manager 푸시서비스와의연동인터페이스제공 subscribe(options): getSubscription(): permissionState(options): 55
56.
Push subscription 구독하고 있는URL
엔드포인트, 푸시서비스에대한구독취소등의인 터페이스제공 56
57.
Push event 수신한푸시메세지에대한정보구조체 서비스워커글로벌스코프의 onpush 로전달됨 모든메세지정보는 .data 필드에기록 57
58.
.onpush 푸시메세지를브라우저가 캐치하면발생하는이벤트 // `push` event handler self.addEventListener('push', function(event) { console.log('Push message received', event); event.waitUntil( // show notification self.registration.showNotification(title, description)); }); 58
59.
알림이벤트핸들러 // 알림을 클릭하면 `notificationclick` 이벤트가 발생합니다. self.addEventListener('notificationclick', function(event) { // 알림창을 닫음 event.notification.close(); // 알림창과 관련된 동작을 수행 event.waitUntil(doPushNotification(event)); }); 59
60.
감사합니다! 60
61.
Special thanks to DEVIEW
2016 쉼터/생수를제공해준 61
Download now