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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
|
---
title: WebSocket
slug: Web/API/WebSocket
tags:
- API
translation_of: Web/API/WebSocket
---
<div>{{APIRef("Web Sockets API")}}{{SeeCompatTable}}</div>
<p><strong><code>WebSocket</code></strong> 객체는 서버와의 <a href="/en-US/docs/Web/API/WebSockets_API">WebSocket</a> 연결을 생성하고 관리할 수 있는 API 들을 제공합니다. 이는 데이터를 전송하거나 주고 받는 등의 API 들을 포함합니다.</p>
<p><code>WebSocket</code> 생성자는 하나의 필수 파라미터와, 하나의 옵셔널 파라미터를 받습니다:</p>
<pre class="syntaxbox">WebSocket WebSocket(
in DOMString url,
in optional DOMString protocols
);
WebSocket WebSocket(
in DOMString url,
in optional DOMString[] protocols
);
</pre>
<dl>
<dt><code>url</code></dt>
<dd>연결할 URL 주소입니다; 웹소켓 서버가 응답할 수 있는 위치의 주소이여야 합니다.</dd>
<dt><code>protocols</code> {{optional_inline}}</dt>
<dd>단일 프로토콜 문자열, 또는 프로토콜 문자열의 배열. 이 문자열들은 서브 프로토콜을 지정하는데 사용됩니다. 이를 통해 하나의 웹소켓 서버가 여러개의 웹 소켓 서브 프로토콜을 구현할 수 있도록 해줍니다. (예를 들어, 하나의 서버가 두 개 이상의 커뮤니케이션 방식을 가지고 싶도록 하고 싶을 때). 만약 지정하지 않으면 빈 문자열을 넣은 것으로 간주됩니다.</dd>
</dl>
<p>이 생성자는 예외가 발생할 수 있습니다:</p>
<dl>
<dt><code>SECURITY_ERR</code></dt>
<dd>The port to which the connection is being attempted is being blocked.</dd>
</dl>
<h2 id="메소드_오버뷰">메소드 오버뷰</h2>
<table class="standard-table">
<tbody>
<tr>
<td><code>void <a href="#close()">close</a>(in optional unsigned long code, in optional DOMString reason);</code></td>
</tr>
<tr>
<td><code>void <a href="#send()">send</a>(in DOMString data);</code></td>
</tr>
</tbody>
</table>
<h2 id="어트리뷰트">어트리뷰트</h2>
<table class="standard-table">
<tbody>
<tr>
<td class="header">Attribute</td>
<td class="header">Type</td>
<td class="header">Description</td>
</tr>
<tr>
<td><code>binaryType</code></td>
<td>{{DOMXref("DOMString")}}</td>
<td>A string indicating the type of binary data being transmitted by the connection. This should be either "blob" if DOM {{domxref("Blob")}} objects are being used or "arraybuffer" if {{jsxref("ArrayBuffer")}} objects are being used.</td>
</tr>
<tr>
<td><code>bufferedAmount</code></td>
<td><code>unsigned long</code></td>
<td>The number of bytes of data that have been queued using calls to {{manch("send")}} but not yet transmitted to the network. This value does not reset to zero when the connection is closed; if you keep calling {{manch("send")}}, this will continue to climb. <strong>Read only</strong></td>
</tr>
<tr>
<td><code>extensions</code></td>
<td>{{DOMXref("DOMString")}}</td>
<td>The extensions selected by the server. This is currently only the empty string or a list of extensions as negotiated by the connection.</td>
</tr>
<tr>
<td><code>onclose</code></td>
<td>{{domxref("EventListener")}}</td>
<td>WebSocket 인터페이스의 연결상태가 <code>readyState</code> 에서<code>CLOSED</code> 로 바뀌었을 때 호출되는 이벤트 리스너입니다. 이 이벤트 리스너는 "close"라는 이름의 <a href="/en-US/docs/Web/API/CloseEvent"><code>CloseEvent</code></a>를 받습니다.</td>
</tr>
<tr>
<td><code>onerror</code></td>
<td>{{domxref("EventListener")}}</td>
<td>"error" 라는 이름의 이벤트가 발생하면 처리할 핸들러입니다. 이는 에러가 발생하는 상황에 호출됩니다.</td>
</tr>
<tr>
<td><code>onmessage</code></td>
<td>{{domxref("EventListener")}}</td>
<td>"message" 이름의 <code><a href="/en-US/docs/Web/API/MessageEvent">MessageEvent</a> </code>이벤트가 발생하면 처리할 핸들러입니다. 이는 서버로부터 메세지가 도착했을 때 호출됩니다.</td>
</tr>
<tr>
<td><code>onopen</code></td>
<td>{{domxref("EventListener")}}</td>
<td>WebSocket 인터페이스의 연결상태가 <code>readyState</code> 에서 <code>OPEN</code>으로 바뀌었을 때 호출되는 이벤트 리스너입니다. ; 연결 상태가 <code>OPEN</code>으로 바뀌었다는 말은 데이터를 주고 받을 준비가 되었다는 뜻입니다. 이 리스너가 처리하는 이벤트는 "open"이라는 이벤트 하나입니다.</td>
</tr>
<tr>
<td><code>protocol</code></td>
<td>{{DOMXref("DOMString")}}</td>
<td>서버에 의해 선택된 서브 프로토콜을 가리킵니다; 이 값은 객체를 생성하면서 <code>protocols</code> 파라미터에 전달했던 값 들 중 하나입니다.</td>
</tr>
<tr>
<td><code>readyState</code></td>
<td><code>unsigned short</code></td>
<td>연결의 현재 상태입니다; 값은 {{anch("Ready state constants")}} 중에 하나입니다. <strong>읽기 전용.</strong></td>
</tr>
<tr>
<td><code>url</code></td>
<td>{{DOMXref("DOMString")}}</td>
<td>생성자에 의해 해석된 URL입니다. 이는 항상 절대 주소를 가리킵니다. <strong>읽기 전용.</strong></td>
</tr>
</tbody>
</table>
<h2 id="상수">상수</h2>
<h3 id="Ready_state_constants">Ready state constants</h3>
<p>아래의 값들은 <code>readyState</code> 어트리뷰트가 웹소켓의 연결 상태를 나타내기 위해서 사용됩니다.</p>
<table class="standard-table">
<tbody>
<tr>
<td class="header">Constant</td>
<td class="header">Value</td>
<td class="header">Description</td>
</tr>
<tr>
<td><code>CONNECTING</code></td>
<td><code>0</code></td>
<td>연결이 수립되지 않은 상태입니다.</td>
</tr>
<tr>
<td><code>OPEN</code></td>
<td><code>1</code></td>
<td>연결이 수립되어 데이터가 오고갈 수 있는 상태입니다.</td>
</tr>
<tr>
<td><code>CLOSING</code></td>
<td><code>2</code></td>
<td>연결이 닫히는 중 입니다.</td>
</tr>
<tr>
<td><code>CLOSED</code></td>
<td><code>3</code></td>
<td>연결이 종료되었거나, 연결에 실패한 경우입니다.</td>
</tr>
</tbody>
</table>
<h2 id="메소드">메소드</h2>
<h3 id="close()">close()</h3>
<p>맺어진 연결, 또는 연결 시도를 종료합니다. 이미 종료된 경우에는 아무 동작도 하지 않습니다.</p>
<pre class="syntaxbox">void close(
in optional unsigned short code,
in optional DOMString reason
);
</pre>
<h4 id="Parameters">Parameters</h4>
<dl>
<dt><code>code</code> {{optional_inline}}</dt>
<dd>연결이 종료되는 이유를 가리키는 숫자 값입니다. 지정되지 않을 경우 기본값은 1000으로 간주됩니다. (일반적인 경우의 "transaction complete" 종료를 나타내는 값). 허용되는 값들은 <code><a href="/en-US/docs/Web/API/CloseEvent">CloseEvent</a></code> 페이지의 <a href="/en-US/docs/Web/API/CloseEvent#Status_codes">list of status codes</a> 를 참고하세요.</dd>
<dt><code>reason</code> {{optional_inline}}</dt>
<dd>연결이 왜 종료되는지를 사람이 읽을 수 있도록 나타내는 문자열입니다. 이 문자열은 UTF-8 포멧이며, 123 바이트를 넘을 수 없습니다. (<strong>글자 수 아님</strong>).</dd>
</dl>
<h4 id="Exceptions_thrown">Exceptions thrown</h4>
<dl>
<dt><code>INVALID_ACCESS_ERR</code></dt>
<dd>잘못된 <code>code</code> 값을 지정했습니다.</dd>
<dt><code>SYNTAX_ERR</code></dt>
<dd><code>reason</code> 값이 너무 길거나, 짝을 이루지 못하는 서로게이트 문자가 있습니다.</dd>
</dl>
<div class="note">
<p><strong>Note:</strong> In Gecko, this method didn't support any parameters prior to Gecko 8.0 {{geckoRelease("8.0")}}.</p>
</div>
<h3 id="send()">send()</h3>
<p>웹소켓 연결을 통해 데이터를 서버로 전송합니다.</p>
<pre class="syntaxbox">void send(
in DOMString data
);
void send(
in ArrayBuffer data
);
void send(
in Blob data
);
</pre>
<h4 id="Parameters_2">Parameters</h4>
<dl>
<dt><code>data</code></dt>
<dd>서버로 전송할 텍스트 메세지입니다.</dd>
</dl>
<h4 id="Exceptions_thrown_2">Exceptions thrown</h4>
<dl>
<dt><code>INVALID_STATE_ERR</code></dt>
<dd>연결이 현재 <code>OPEN </code>상태가 아닙니다.</dd>
<dt><code>SYNTAX_ERR</code></dt>
<dd>data 값에 짝을 이루지 못하는 서로게이트 문자가 있습니다.</dd>
</dl>
<div class="note">
<p><strong>Note:</strong> Gecko's implementation of the <code>send()</code> method differs somewhat from the specification in {{Gecko("6.0")}}; Gecko returns a <code>boolean</code> indicating whether or not the connection is still open (and, by extension, that the data was successfully queued or transmitted); this is corrected in {{Gecko("8.0")}}.</p>
<p>As of {{Gecko("11.0")}}, support for {{jsxref("ArrayBuffer")}} is implemented but not {{domxref("Blob")}} data types.</p>
</div>
<h2 id="Specifications">Specifications</h2>
<table class="standard-table">
<tbody>
<tr>
<th>Specification</th>
<th>Status</th>
<th>Comment</th>
</tr>
<tr>
<td>{{SpecName("Websockets", "#the-websocket-interface", "WebSocket")}}</td>
<td>{{Spec2("Websockets")}}</td>
<td>Initial definition</td>
</tr>
</tbody>
</table>
<h2 id="브라우저_호환성">브라우저 호환성</h2>
<div>{{Compat("api.WebSocket")}}</div>
<h2 id="같이_보기">같이 보기</h2>
<ul>
<li><a href="/ko/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications">Writing WebSocket client applications</a></li>
</ul>
|