diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:17 -0500 |
commit | da78a9e329e272dedb2400b79a3bdeebff387d47 (patch) | |
tree | e6ef8aa7c43556f55ddfe031a01cf0a8fa271bfe /files/ko/web/api/sharedworker | |
parent | 1109132f09d75da9a28b649c7677bb6ce07c40c0 (diff) | |
download | translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.gz translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.bz2 translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.zip |
initial commit
Diffstat (limited to 'files/ko/web/api/sharedworker')
-rw-r--r-- | files/ko/web/api/sharedworker/index.html | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/files/ko/web/api/sharedworker/index.html b/files/ko/web/api/sharedworker/index.html new file mode 100644 index 0000000000..f155b9f03a --- /dev/null +++ b/files/ko/web/api/sharedworker/index.html @@ -0,0 +1,105 @@ +--- +title: SharedWorker +slug: Web/API/SharedWorker +translation_of: Web/API/SharedWorker +--- +<div>{{APIRef("Web Workers API")}}</div> + +<p><code><strong>SharedWorker</strong></code><strong> </strong>인터페이스는 윈도우 창이나 iframe, 워커등의 다른 브라우징 컨텍스트에서도 접근이 가능한 특정 종류의 워커를 의미합니다. 기존의 다른 종류의 워커들과 다른 전역 스코프를 갖는 인터페이스를 구현합니다. {{domxref("SharedWorkerGlobalScope")}}.</p> + +<div class="note"> +<p><strong>참고 : </strong> SharedWorker 가 몇개의 다른 브라우징 컨텍스트에서 접근이 가능하면, 그 브라우징 컨텍스트들은 모두 정확히 같은 오리진을 공유해야 합니다. (같은 프로토콜, 호스트, 포트 등)</p> +</div> + +<h2 id="생성자">생성자</h2> + +<dl> + <dt>{{domxref("SharedWorker.SharedWorker", "SharedWorker()")}}</dt> + <dd>특정 URL에서 스크립트를 실행하는 shared web worker를 생성합니다.</dd> +</dl> + +<h2 id="속성">속성</h2> + +<p><em>{{domxref("EventTarget")}}</em> 의 속성들을 상속 받습니다. 그리고 <em>{{domxref("AbstractWorker")}} </em>의 속성들을 구현할 수 있습니다.</p> + +<dl> + <dt>{{domxref("AbstractWorker.onerror")}}</dt> + <dd>워커에서 {{domxref("ErrorEvent")}} 타입의 에러가 발생했을 때 호출되는는 {{domxref("EventListener")}}</dd> + <dt>{{domxref("SharedWorker.port")}} {{readonlyInline}}</dt> + <dd>shared worker를 제어하거나 통신하기 위해 사용되는 {{domxref("MessagePort")}} 객체를 반환</dd> +</dl> + +<h2 id="메서드">메서드</h2> + +<p><em>{{domxref("EventTarget")}}</em> 의 속성들을 상속 받습니다. 그리고 <em>{{domxref("AbstractWorker")}} </em>의 속성들을 구현할 수 있습니다.</p> + +<h2 id="예제">예제</h2> + +<p><a class="external external-icon" href="https://github.com/mdn/simple-shared-worker">Basic shared worker example</a> (<a class="external external-icon" href="http://mdn.github.io/simple-shared-worker/">run shared worker</a>) 를 보시면 2개의 HTML 페이지가 있습니다. 각각 간단한 계산을 위해 자바스크립트를 사용합니다. 각기 다른 스크립트가 계산을 위해 같은 워커 파일을 사용합니다 — 두 개 페이지가 모두 다른 윈도우창에서 실행되더라도 같은 워커에 접근할 수 있습니다.</p> + +<p>아래 코드 스니펫은 {{domxref("SharedWorker.SharedWorker", "SharedWorker()")}} 생성자를 이용해 <code>SharedWorker</code> 객체를 생성합니다. 두 스크립트 모두 아래를 포함합니다.</p> + +<pre class="brush: js">var myWorker = new SharedWorker("worker.js"); +</pre> + +<p>두 스크립트는 {{domxref("SharedWorker.port")}} 속성으로 생성한 {{domxref("MessagePort")}} 객체를 통해 워커에 접근할 수 있습니다. <code>addEventListener</code> 를 이용하여 <code>onmessage</code> 가 추가되면, port는 <code>start()</code> 메서드를 이용하여 수동으로 시작할 수 있습니다.</p> + +<pre class="brush: js">myWorker.port.start();</pre> + +<p>포트가 시작되면, 양 스크립트는 워커에 메시지를 보내고 <code>port.postMessage()</code>와 <code>port.onmessage</code> 를 각각 이용하여 메시지를 처리합니다.</p> + +<pre class="brush: js">first.onchange = function() { + myWorker.port.postMessage([first.value,second.value]); + console.log('Message posted to worker'); + } + + second.onchange = function() { + myWorker.port.postMessage([first.value,second.value]); + console.log('Message posted to worker'); + } + + myWorker.port.onmessage = function(e) { + result1.textContent = e.data; + console.log('Message received from worker'); + }</pre> + +<p>워커에서 {{domxref("SharedWorkerGlobalScope.onconnect")}} 핸들러를 이용하여 위에 언급된 포트에 접속할 수 있습니다. 워커에 연관되어 있는 포트는 {{event("connect")}} 이벤트 포트 속성에 접근할 수 있습니다 — 그리고나서 {{domxref("MessagePort")}} <code>start()</code> 메서드로 포트를 시작하고, onmessage 핸들러로 메인쓰레드에서 받은 메시지를 처리합니다.</p> + +<pre class="brush: js">onconnect = function(e) { + var port = e.ports[0]; + + port.addEventListener('message', function(e) { + var workerResult = 'Result: ' + (e.data[0] * e.data[1]); + port.postMessage(workerResult); + }); + + port.start(); // Required when using addEventListener. Otherwise called implicitly by onmessage setter. +}</pre> + +<h2 id="명세">명세</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('HTML WHATWG', "#sharedworker", "SharedWorker")}}</td> + <td>{{Spec2('HTML WHATWG')}}</td> + <td>No change from {{SpecName("Web Workers")}}.</td> + </tr> + </tbody> +</table> + +<h2 id="브라우저_호환성">브라우저 호환성</h2> + +<p>{{Compat("api.SharedWorker")}}</p> + +<h2 id="같이_보기">같이 보기</h2> + +<ul> + <li>{{domxref("Worker")}}</li> + <li><a class="internal" href="/en-US/docs/Web/Guide/Performance/Using_web_workers">Using web workers</a></li> +</ul> |