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
|
---
title: WebSockets
slug: WebSockets
tags:
- NeedsBrowserCompatibility
- NeedsTranslation
- References
- TopicStub
- WebSockets
translation_of: Web/API/WebSockets_API
---
<p>WebSockets is an advanced technology that makes it possible to open an interactive communication session between the user's browser and a server. With this API, you can send messages to a server and receive event-driven responses without having to poll the server for a reply.</p>
<div class="cleared row topicpage-table">
<div class="section">
<h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
<dl>
<dt><a href="/en-US/docs/WebSockets/Writing_WebSocket_client_applications" title="WebSockets/Writing WebSocket client applications">Writing WebSocket client applications</a></dt>
<dd>A tutorial guide to writing WebSocket clients to run in the browser.</dd>
<dt><a href="/en-US/docs/WebSockets/WebSockets_reference" title="WebSockets/WebSockets reference">WebSockets reference</a></dt>
<dd>A reference to the client-side WebSocket API.</dd>
<dt><a href="/en-US/docs/WebSockets/Writing_WebSocket_servers" title="WebSockets/Writing WebSocket servers">Writing WebSocket servers (Needs Content)</a></dt>
<dd>A guide to writing server-side code to handle the WebSocket protocol.</dd>
</dl>
<p><span class="alllinks"><a href="/en-US/docs/tag/WebSockets" title="tag/WebSockets">View All...</a></span></p>
</div>
<div class="section">
<h2 class="Tools" id="Tools" name="Tools">Tools</h2>
<ul>
<li><a class="external" href="http://socket.io" title="http://socket.io/">Socket.IO</a>: A powerful cross-platform WebSocket API for <a class="external" href="http://nodejs.org" title="http://nodejs.org/">Node.js</a>.</li>
<li><a class="link-https" href="https://github.com/Worlize/WebSocket-Node" title="https://github.com/Worlize/WebSocket-Node">WebSocket-Node</a>: A WebSocket server API implementation for <a class="external" href="http://nodejs.org" title="http://nodejs.org/">Node.js</a>.</li>
<li><a href="http://www.totaljs.com">Total.js</a>: Web application framework for <a href="http://www.nodejs.org">Node.js</a> (Example: <a href="https://github.com/totaljs/examples/tree/master/websocket">WebSocket chat</a>)</li>
<li><a href="http://ajf.me/websocket/#libs" title="http://websocket.us/#libs">A more extensive list of frameworks and libraries here</a></li>
</ul>
<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
<ul>
<li><a href="/en-US/docs/AJAX" title="AJAX">AJAX</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a></li>
</ul>
</div>
</div>
<h2 id="See_also">See also</h2>
<ul>
<li><a class="external" href="http://tools.ietf.org/html/rfc6455">RFC 6455 - The WebSocket Protocol</a></li>
<li><a class="external" href="http://www.w3.org/TR/websockets/">WebSocket API Specification</a></li>
<li><a href="/en-US/docs/Server-sent_events" title="Server-sent_events">Server-Sent Events</a></li>
</ul>
<h2 id="Browser_compatibility">Browser compatibility</h2>
<p>{{CompatibilityTable}}</p>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
<tr>
<td>Version -76 support {{obsolete_inline}}</td>
<td>6</td>
<td>{{CompatGeckoDesktop("2.0")}}</td>
<td>{{CompatNo}}</td>
<td>11.00 (disabled)</td>
<td>5.0.1</td>
</tr>
<tr>
<td>Protocol version 7 support {{obsolete_inline}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatGeckoDesktop("6.0")}}<br>
{{property_prefix("Moz")}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
</tr>
<tr>
<td>Protocol version 10 support {{obsolete_inline}}</td>
<td>14</td>
<td>{{CompatGeckoDesktop("7.0")}}<br>
{{property_prefix("Moz")}}</td>
<td>HTML5 Labs</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
<tr>
<td>Standard - RFC 6455 Support</td>
<td>16</td>
<td>{{CompatGeckoDesktop("11.0")}}</td>
<td>10</td>
<td>12.10</td>
<td>6.0</td>
</tr>
<tr>
<td>Usable in Workers</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoDesktop("37.0")}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Android</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Mobile</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Version -76 support {{obsolete_inline}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
<tr>
<td>Protocol version 7 support {{obsolete_inline}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
<tr>
<td>Protocol version 8 support (IETF draft 10) {{obsolete_inline}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatGeckoMobile("7.0")}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
<tr>
<td>Standard - RFC 6455 Support</td>
<td>4.4</td>
<td>{{CompatGeckoDesktop("11.0")}}</td>
<td>{{CompatUnknown}}</td>
<td>12.10</td>
<td>6.0</td>
</tr>
<tr>
<td>Usable in Workers</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoMobile("37.0")}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<h3 id="Gecko_notes">Gecko notes</h3>
<p>WebSockets support in Firefox is continuing to track the evolving WebSocket specification. Firefox 6 implements version 7 of the underlying protocol, while Firefox 7 implements version 8 (as specified by IETF draft 10). Firefox mobile received WebSocket support in Firefox mobile 7.0.</p>
<h4 id="Gecko_6.0">Gecko 6.0</h4>
<p>Prior to Gecko 6.0 {{geckoRelease("6.0")}}, there was, incorrectly, a <code>WebSocket</code> object that some sites were thinking implied that <code>WebSocket</code> services were not prefixed; this object has been renamed to <code>MozWebSocket</code>.</p>
<h4 id="Gecko_7.0">Gecko 7.0</h4>
<p>Starting in Gecko 7.0 {{geckoRelease("7.0")}}, the <code>network.websocket.max-connections</code> preference is used to determine the maximum number of WebSocket connections that can be open at a time. The default value is 200.</p>
<h4 id="Gecko_8.0">Gecko 8.0</h4>
<p>Starting in Gecko 8.0 {{geckoRelease("8.0")}}, the deflate-stream extension to the WebSocket protocol has been disabled, since it's been deprecated from the specification drafts. This resolves incompatibilities with some sites.</p>
<h4 id="Gecko_11.0">Gecko 11.0</h4>
<p>Prior to Gecko 11.0, both incoming and outgoing messages were limited to 16 MB in size. They may now be up to 2 GB in size. Note, however, that memory limitations (especially on mobile devices) make that a theoretical maximum, not a practical one. In reality, transfers of that size will fail on devices that don't have enough memory.</p>
<p>Additionally, ArrayBuffer send and receive support for binary data has been implemented.</p>
<p>Starting in Gecko 11.0, the WebSocket API is no longer prefixed.</p>
|