aboutsummaryrefslogtreecommitdiff
path: root/files/ko/web/api/rtcpeerconnection/createanswer/index.html
blob: a57adb7be1b2f76cca611be3757634131b8d0fbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
title: RTCPeerConnection.createAnswer()
slug: Web/API/RTCPeerConnection/createAnswer
translation_of: Web/API/RTCPeerConnection/createAnswer
---
<p>{{APIRef("WebRTC")}}</p>

<p>{{domxref("RTCPeerConnection")}} 인터페이스의 <strong><code>createAnswer()</code></strong> 메소드는 WebRTC 연결 중 발생하는 offer/answer 네고시에이션에서 원격 유저로부터 받은 offer에 대한 {{Glossary("SDP")}} answer를 생성합니다. 이 answer는 세션이 이미 부착된 미디어, 브라우저에서 지원하는 코덱 및 옵션, 그리고 이미 수집된 {{Glossary("ICE")}} candidate에 대한 정보를 담고 잇습니다. Answer는 반환 된 {{jsxref("Promise")}}에 전달되고, 그 다음에는 네고시에이션 과정을 계속 진행하기 위해서 offer의 소스에게 전달되야합니다. </p>

<h2 id="Syntax">Syntax</h2>

<pre class="syntaxbox"><em>aPromise</em> = <em>RTCPeerConnection</em>.createAnswer([<em>options</em>]);

<em>RTCPeerConnection</em>.createAnswer(<em>successCallback</em>, <em>failureCallback</em>[, <em>options</em>]); {{deprecated_inline}}</pre>

<h3 id="매개_변수">매개 변수</h3>

<dl>
 <dt><code>options</code> {{optional_inline}}</dt>
 <dd>Answer를 커스터마이즈 할 수 있는 옵션을 설정하는 객체입니다. 설정 가능한 옵션은 {{domxref("RTCAnswerOptions")}} 딕셔너리에 기반합니다.</dd>
</dl>

<h3 id="더_이상_사용되지_않는_매개_변수">더 이상 사용되지 않는 매개 변수</h3>

<p>이전 버전의 문서에서는 이 함수를 콜백 기반으로 사용하도록 되어있습니다. 콜백 기반 함수는 이제 더 이상 사용되지 않으며, <strong>사용하지 않는 것을 권장</strong>합니다. 이미 사용 중이라면, <a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise" title="Promise 개체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다."><code>Promise</code></a> 버전인 <code>createAnswer()</code>를 사용하도록 코드를 업데이트 하십시오. 이전 버전의 코드를 업데이트 하는 것을 쉽게 하기 위해 고안된 <code>createAnswer()</code>의 특정 변수에 대해 아래에서 설명합니다.</p>

<dl>
</dl>

<dl>
 <dt><code>successCallback</code> {{deprecated_inline}}</dt>
 <dd>신규 생성된 answer를 설명하는 단일 {{domxref("RTCSessionDescription")}} 객체에 전달되는 {{domxref("RTCSessionDescriptionCallback")}} 입니다.</dd>
 <dt><code>failureCallback</code> {{deprecated_inline}}</dt>
 <dd>왜 answer를 생성하는 요청이 실패했는지를 설명해주는 단일 {{domxref("DOMException")}} 객체에 전달되는 {{domxref("RTCPeerConnectionErrorCallback")}} 입니다.</dd>
 <dt><code>options</code> {{optional_inline}}</dt>
 <dd>Answer를 위해 요청된 옵션을 제공하는 {{domxref("RTCOfferOptions")}} 객체입니다. </dd>
</dl>

<h3 id="예외처리">예외처리</h3>

<dl>
 <dt><code>NotReadableError</code></dt>
 <dd>아이덴티티 제공자가 아이덴티티 주장을 제공 할 수 없음을 알려줍니다.</dd>
 <dt><code>OperationError</code></dt>
 <dd>SDP 생성이 어떤 이유로 실패했음을 알려줍니다. 이는 일반적인 failure catch-all exception 입니다.</dd>
</dl>

<h3 id="반환_값">반환 값</h3>

<p>다른 유저에게 전달되는 SDP answer를 가진 {{domxref("RTCSessionDescriptionInit")}} 딕셔너리에 준수하는 객체와 함께 호출되는 fulfillment 핸들러인 {{jsxref("Promise")}} 입니다.</p>

<h2 id="예시">예시</h2>

<p>아래는 <a href="/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling">Signaling and video calling</a> 문서에서 나오는 코드의 일부입니다. 이 코드는 시그널링 채널을 통해 다른 유저에게 offer는 전달하는 메세지를 다루는 핸들러에서 나옵니다.</p>

<div class="note">
<p>주의 할 점은 이것이 시그널링 과정의 일부이며, 전송계층 구현에 대한 세부사항은 전적으로 개발자에게 달려있다는 것 입니다. 여기서는 <a href="/en-US/docs/Web/API/WebSocket_API">WebSocket</a> 연결을 사용해서 다른 유저에게 "video-answer" 값이 있는 <code>type</code> 필드 및 offer를 보낸 장치에게 전달 할 answer를 담은 {{Glossary("JSON")}} 메세지를 보냅니다. 프로미스 fulfillment 핸들러의 다른 모든 항목들과 함께 <code>sendToServer()</code>함수로 전달되는 객체의 내용을 어떻게 할 지는 개발자의 디자인에 달려잇습니다.</p>
</div>

<pre class="brush: js">pc.createAnswer().then(function(answer) {
  return pc.setLocalDescription(answer);
})
.then(function() {
  // Send the answer to the remote peer through the signaling server.
})
.catch(handleGetUserMediaError);
</pre>

<p>위의 예제는 {{domxref("RTCPeerConnection")}}가 신규 answer를 만들고 반환하도록 요청합니다. 프로미스 핸들러에 반환된 answer는 {{domxref("RTCPeerConnection.setLocalDescription", "setLocalDescription()")}} 호출에 의해 연결의 로컬 엔드에 대한 description으로 설정됩니다.</p>

<p>이 과정이 성공하면, answer는 적당한 아무 프로토콜을 사용해서 시그널링 서버에 전달됩니다. 그리고 {{jsxref("Promise.catch()")}}는 에러를 잡아내고 처리하기 위해 사용됩니다.</p>

<p>{{SectionOnPage("/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling", "Handling the invitation")}}를 확인해서 전체 코드를 확인해보십시오. 이 문서를 보면 시그널링 과정 및 answer가 어떻게 작동하는지를 이해 할 수 있습니다.</p>

<h2 id="명세">명세</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">명세</th>
   <th scope="col">상태</th>
   <th scope="col">코멘트</th>
  </tr>
  <tr>
   <td>{{SpecName('WebRTC 1.0', '#dom-rtcpeerconnection-createanswer', 'createAnswer()')}}</td>
   <td>{{Spec2('WebRTC 1.0')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="브라우저_호환성">브라우저 호환성</h2>



<p>{{Compat("api.RTCPeerConnection.createAnswer")}}</p>