playful 0.1.0.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gemtest +0 -0
- data/.gitignore +19 -0
- data/.rspec +1 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/History.rdoc +3 -0
- data/LICENSE.rdoc +22 -0
- data/README.rdoc +194 -0
- data/Rakefile +20 -0
- data/features/control_point.feature +13 -0
- data/features/device.feature +22 -0
- data/features/device_discovery.feature +9 -0
- data/features/step_definitions/control_point_steps.rb +19 -0
- data/features/step_definitions/device_discovery_steps.rb +40 -0
- data/features/step_definitions/device_steps.rb +28 -0
- data/features/support/common.rb +9 -0
- data/features/support/env.rb +17 -0
- data/features/support/fake_upnp_device_collection.rb +108 -0
- data/features/support/world_extensions.rb +15 -0
- data/lib/core_ext/hash_patch.rb +5 -0
- data/lib/core_ext/socket_patch.rb +16 -0
- data/lib/core_ext/to_upnp_s.rb +65 -0
- data/lib/playful.rb +5 -0
- data/lib/playful/control_point.rb +175 -0
- data/lib/playful/control_point/base.rb +74 -0
- data/lib/playful/control_point/device.rb +511 -0
- data/lib/playful/control_point/error.rb +13 -0
- data/lib/playful/control_point/service.rb +404 -0
- data/lib/playful/device.rb +28 -0
- data/lib/playful/logger.rb +8 -0
- data/lib/playful/ssdp.rb +195 -0
- data/lib/playful/ssdp/broadcast_searcher.rb +114 -0
- data/lib/playful/ssdp/error.rb +6 -0
- data/lib/playful/ssdp/listener.rb +38 -0
- data/lib/playful/ssdp/multicast_connection.rb +112 -0
- data/lib/playful/ssdp/network_constants.rb +17 -0
- data/lib/playful/ssdp/notifier.rb +41 -0
- data/lib/playful/ssdp/searcher.rb +87 -0
- data/lib/playful/version.rb +3 -0
- data/lib/rack/upnp_control_point.rb +70 -0
- data/playful.gemspec +38 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/support/search_responses.rb +134 -0
- data/spec/unit/core_ext/to_upnp_s_spec.rb +105 -0
- data/spec/unit/playful/control_point/device_spec.rb +7 -0
- data/spec/unit/playful/control_point_spec.rb +45 -0
- data/spec/unit/playful/ssdp/listener_spec.rb +29 -0
- data/spec/unit/playful/ssdp/multicast_connection_spec.rb +157 -0
- data/spec/unit/playful/ssdp/notifier_spec.rb +76 -0
- data/spec/unit/playful/ssdp/searcher_spec.rb +110 -0
- data/spec/unit/playful/ssdp_spec.rb +214 -0
- data/tasks/control_point.html +30 -0
- data/tasks/control_point.thor +43 -0
- data/tasks/search.thor +128 -0
- data/tasks/test_js/FABridge.js +1425 -0
- data/tasks/test_js/WebSocketMain.swf +807 -0
- data/tasks/test_js/swfobject.js +825 -0
- data/tasks/test_js/web_socket.js +1133 -0
- data/test/test_ssdp.rb +298 -0
- data/test/test_ssdp_notification.rb +74 -0
- data/test/test_ssdp_response.rb +31 -0
- data/test/test_ssdp_search.rb +23 -0
- metadata +339 -0
@@ -0,0 +1,807 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
<!DOCTYPE html>
|
5
|
+
<html>
|
6
|
+
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
|
7
|
+
<meta charset='utf-8'>
|
8
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
9
|
+
<title>em-websocket/examples/js/WebSocketMain.swf at master · igrigorik/em-websocket · GitHub</title>
|
10
|
+
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
|
11
|
+
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
|
12
|
+
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
<meta content="authenticity_token" name="csrf-param" />
|
18
|
+
<meta content="/00GNKZoQemif5aIHle39yACwSw8QsWfrzTt0DLSK+c=" name="csrf-token" />
|
19
|
+
|
20
|
+
<link href="https://a248.e.akamai.net/assets.github.com/stylesheets/bundles/github-bbf16587e4cb227e94d4838b0b62e06ad84f2419.css" media="screen" rel="stylesheet" type="text/css" />
|
21
|
+
<link href="https://a248.e.akamai.net/assets.github.com/stylesheets/bundles/github2-27fd7716e0bafa52297f37784a2d549774dc1969.css" media="screen" rel="stylesheet" type="text/css" />
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
<script src="https://a248.e.akamai.net/assets.github.com/javascripts/bundles/frameworks-a450c7f907bdc1ee6b362ab1ecca811c761fd259.js" type="text/javascript"></script>
|
27
|
+
|
28
|
+
<script defer="defer" src="https://a248.e.akamai.net/assets.github.com/javascripts/bundles/github-962475eecb5a745150445b68592ced09de5cd872.js" type="text/javascript"></script>
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
<link rel='permalink' href='/igrigorik/em-websocket/blob/b9d439cd3494db3225587ccf7cb060f4b37a9f13/examples/js/WebSocketMain.swf'>
|
33
|
+
<meta property="og:title" content="em-websocket"/>
|
34
|
+
<meta property="og:type" content="githubog:gitrepository"/>
|
35
|
+
<meta property="og:url" content="https://github.com/igrigorik/em-websocket"/>
|
36
|
+
<meta property="og:image" content="https://a248.e.akamai.net/assets.github.com/images/gravatars/gravatar-140.png?1329275960"/>
|
37
|
+
<meta property="og:site_name" content="GitHub"/>
|
38
|
+
<meta property="og:description" content="EventMachine based WebSocket server. Contribute to em-websocket development by creating an account on GitHub."/>
|
39
|
+
|
40
|
+
<meta name="description" content="EventMachine based WebSocket server. Contribute to em-websocket development by creating an account on GitHub." />
|
41
|
+
|
42
|
+
<link href="https://github.com/igrigorik/em-websocket/commits/master.atom" rel="alternate" title="Recent Commits to em-websocket:master" type="application/atom+xml" />
|
43
|
+
|
44
|
+
</head>
|
45
|
+
|
46
|
+
|
47
|
+
<body class="logged_out page-blob vis-public env-production " data-blob-contribs-enabled="yes">
|
48
|
+
<div id="wrapper">
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
<div id="header" class="true clearfix">
|
55
|
+
<div class="container clearfix">
|
56
|
+
<a class="site-logo" href="https://github.com/">
|
57
|
+
<!--[if IE]>
|
58
|
+
<img alt="GitHub" class="github-logo" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7.png?1323882778" />
|
59
|
+
<img alt="GitHub" class="github-logo-hover" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7-hover.png?1324325424" />
|
60
|
+
<![endif]-->
|
61
|
+
<img alt="GitHub" class="github-logo-4x" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x.png?1337118070" />
|
62
|
+
<img alt="GitHub" class="github-logo-4x-hover" height="30" src="https://a248.e.akamai.net/assets.github.com/images/modules/header/logov7@4x-hover.png?1337118070" />
|
63
|
+
</a>
|
64
|
+
|
65
|
+
|
66
|
+
<!--
|
67
|
+
make sure to use fully qualified URLs here since this nav
|
68
|
+
is used on error pages on other domains
|
69
|
+
-->
|
70
|
+
<ul class="top-nav logged_out">
|
71
|
+
<li class="pricing"><a href="https://github.com/plans">Signup and Pricing</a></li>
|
72
|
+
<li class="explore"><a href="https://github.com/explore">Explore GitHub</a></li>
|
73
|
+
<li class="features"><a href="https://github.com/features">Features</a></li>
|
74
|
+
<li class="blog"><a href="https://github.com/blog">Blog</a></li>
|
75
|
+
<li class="login"><a href="https://github.com/login?return_to=%2Figrigorik%2Fem-websocket%2Fblob%2Fmaster%2Fexamples%2Fjs%2FWebSocketMain.swf">Login</a></li>
|
76
|
+
</ul>
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
<div class="site hfeed" itemscope itemtype="http://schema.org/WebPage">
|
87
|
+
<div class="container hentry">
|
88
|
+
<div class="pagehead repohead instapaper_ignore readability-menu">
|
89
|
+
<div class="title-actions-bar">
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
<ul class="pagehead-actions">
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
<li>
|
100
|
+
<span class="watch-button"><a href="/login?return_to=%2Figrigorik%2Fem-websocket" class="minibutton btn-watch js-toggler-target entice tooltipped leftwards" title="You must be logged in to use this feature" rel="nofollow">Watch</a><a class="social-count js-social-count" href="/igrigorik/em-websocket/watchers">755</a></span>
|
101
|
+
</li>
|
102
|
+
<li>
|
103
|
+
<a href="/login?return_to=%2Figrigorik%2Fem-websocket" class="minibutton btn-fork js-toggler-target fork-button entice tooltipped leftwards" title="You must be logged in to use this feature" rel="nofollow">Fork</a><a href="/igrigorik/em-websocket/network" class="social-count">73</a>
|
104
|
+
</li>
|
105
|
+
|
106
|
+
</ul>
|
107
|
+
|
108
|
+
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
|
109
|
+
<span class="repo-label"><span>public</span></span>
|
110
|
+
<span class="mega-icon mega-icon-public-repo"></span>
|
111
|
+
<span class="author vcard">
|
112
|
+
<a href="/igrigorik" class="url fn" itemprop="url" rel="author"> <span itemprop="title">igrigorik</span>
|
113
|
+
</a></span> /
|
114
|
+
<strong><a href="/igrigorik/em-websocket" class="js-current-repository">em-websocket</a></strong>
|
115
|
+
</h1>
|
116
|
+
</div>
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
<ul class="tabs">
|
121
|
+
<li><a href="/igrigorik/em-websocket" class="selected" highlight="repo_sourcerepo_downloadsrepo_commitsrepo_tagsrepo_branches">Code</a></li>
|
122
|
+
<li><a href="/igrigorik/em-websocket/network" highlight="repo_network">Network</a>
|
123
|
+
<li><a href="/igrigorik/em-websocket/pulls" highlight="repo_pulls">Pull Requests <span class='counter'>2</span></a></li>
|
124
|
+
|
125
|
+
<li><a href="/igrigorik/em-websocket/issues" highlight="repo_issues">Issues <span class='counter'>14</span></a></li>
|
126
|
+
|
127
|
+
<li><a href="/igrigorik/em-websocket/wiki" highlight="repo_wiki">Wiki</a></li>
|
128
|
+
|
129
|
+
<li><a href="/igrigorik/em-websocket/graphs" highlight="repo_graphsrepo_contributors">Graphs</a></li>
|
130
|
+
|
131
|
+
</ul>
|
132
|
+
|
133
|
+
<div class="frame frame-center tree-finder" style="display:none"
|
134
|
+
data-tree-list-url="/igrigorik/em-websocket/tree-list/b9d439cd3494db3225587ccf7cb060f4b37a9f13"
|
135
|
+
data-blob-url-prefix="/igrigorik/em-websocket/blob/b9d439cd3494db3225587ccf7cb060f4b37a9f13"
|
136
|
+
>
|
137
|
+
|
138
|
+
<div class="breadcrumb">
|
139
|
+
<span class="bold"><a href="/igrigorik/em-websocket">em-websocket</a></span> /
|
140
|
+
<input class="tree-finder-input js-navigation-enable" type="text" name="query" autocomplete="off" spellcheck="false">
|
141
|
+
</div>
|
142
|
+
|
143
|
+
<div class="octotip">
|
144
|
+
<p>
|
145
|
+
<a href="/igrigorik/em-websocket/dismiss-tree-finder-help" class="dismiss js-dismiss-tree-list-help" title="Hide this notice forever" rel="nofollow">Dismiss</a>
|
146
|
+
<span class="bold">Octotip:</span> You've activated the <em>file finder</em>
|
147
|
+
by pressing <span class="kbd">t</span> Start typing to filter the
|
148
|
+
file list. Use <span class="kbd badmono">↑</span> and
|
149
|
+
<span class="kbd badmono">↓</span> to navigate,
|
150
|
+
<span class="kbd">enter</span> to view files.
|
151
|
+
</p>
|
152
|
+
</div>
|
153
|
+
|
154
|
+
<table class="tree-browser" cellpadding="0" cellspacing="0">
|
155
|
+
<tr class="js-header"><th> </th><th>name</th></tr>
|
156
|
+
<tr class="js-no-results no-results" style="display: none">
|
157
|
+
<th colspan="2">No matching files</th>
|
158
|
+
</tr>
|
159
|
+
<tbody class="js-results-list js-navigation-container">
|
160
|
+
</tbody>
|
161
|
+
</table>
|
162
|
+
</div>
|
163
|
+
|
164
|
+
<div id="jump-to-line" style="display:none">
|
165
|
+
<h2>Jump to Line</h2>
|
166
|
+
<form accept-charset="UTF-8">
|
167
|
+
<input class="textfield" type="text">
|
168
|
+
<div class="full-button">
|
169
|
+
<button type="submit" class="classy">
|
170
|
+
Go
|
171
|
+
</button>
|
172
|
+
</div>
|
173
|
+
</form>
|
174
|
+
</div>
|
175
|
+
|
176
|
+
|
177
|
+
<div class="subnav-bar">
|
178
|
+
|
179
|
+
<ul class="actions subnav">
|
180
|
+
<li><a href="/igrigorik/em-websocket/tags" class="" highlight="repo_tags">Tags <span class="counter">10</span></a></li>
|
181
|
+
<li><a href="/igrigorik/em-websocket/downloads" class="blank downloads-blank" highlight="repo_downloads">Downloads <span class="counter">0</span></a></li>
|
182
|
+
|
183
|
+
</ul>
|
184
|
+
|
185
|
+
<ul class="scope">
|
186
|
+
<li class="switcher">
|
187
|
+
|
188
|
+
<div class="context-menu-container js-menu-container js-context-menu">
|
189
|
+
<a href="#"
|
190
|
+
class="minibutton bigger switcher js-menu-target js-commitish-button btn-branch repo-tree"
|
191
|
+
data-hotkey="w"
|
192
|
+
data-master-branch="master"
|
193
|
+
data-ref="master">
|
194
|
+
<span><i>branch:</i> master</span>
|
195
|
+
</a>
|
196
|
+
|
197
|
+
<div class="context-pane commitish-context js-menu-content">
|
198
|
+
<a href="javascript:;" class="close js-menu-close"><span class="mini-icon mini-icon-remove-close"></span></a>
|
199
|
+
<div class="context-title">Switch Branches/Tags</div>
|
200
|
+
<div class="context-body pane-selector commitish-selector js-navigation-container">
|
201
|
+
<div class="filterbar">
|
202
|
+
<input type="text" id="context-commitish-filter-field" class="js-navigation-enable" placeholder="Filter branches/tags" data-filterable />
|
203
|
+
|
204
|
+
<ul class="tabs">
|
205
|
+
<li><a href="#" data-filter="branches" class="selected">Branches</a></li>
|
206
|
+
<li><a href="#" data-filter="tags">Tags</a></li>
|
207
|
+
</ul>
|
208
|
+
</div>
|
209
|
+
|
210
|
+
<div class="js-filter-tab js-filter-branches" data-filterable-for="context-commitish-filter-field" data-filterable-type=substring>
|
211
|
+
<div class="no-results js-not-filterable">Nothing to show</div>
|
212
|
+
<div class="commitish-item branch-commitish selector-item js-navigation-item js-navigation-target">
|
213
|
+
<h4>
|
214
|
+
<a href="/igrigorik/em-websocket/blob/master/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="master" rel="nofollow">master</a>
|
215
|
+
</h4>
|
216
|
+
</div>
|
217
|
+
</div>
|
218
|
+
|
219
|
+
<div class="js-filter-tab js-filter-tags" style="display:none" data-filterable-for="context-commitish-filter-field" data-filterable-type=substring>
|
220
|
+
<div class="no-results js-not-filterable">Nothing to show</div>
|
221
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
222
|
+
<h4>
|
223
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.6/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.6" rel="nofollow">v0.3.6</a>
|
224
|
+
</h4>
|
225
|
+
</div>
|
226
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
227
|
+
<h4>
|
228
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.5/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.5" rel="nofollow">v0.3.5</a>
|
229
|
+
</h4>
|
230
|
+
</div>
|
231
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
232
|
+
<h4>
|
233
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.4/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.4" rel="nofollow">v0.3.4</a>
|
234
|
+
</h4>
|
235
|
+
</div>
|
236
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
237
|
+
<h4>
|
238
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.3/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.3" rel="nofollow">v0.3.3</a>
|
239
|
+
</h4>
|
240
|
+
</div>
|
241
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
242
|
+
<h4>
|
243
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.2/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.2" rel="nofollow">v0.3.2</a>
|
244
|
+
</h4>
|
245
|
+
</div>
|
246
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
247
|
+
<h4>
|
248
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.1/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.1" rel="nofollow">v0.3.1</a>
|
249
|
+
</h4>
|
250
|
+
</div>
|
251
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
252
|
+
<h4>
|
253
|
+
<a href="/igrigorik/em-websocket/blob/v0.3.0/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.3.0" rel="nofollow">v0.3.0</a>
|
254
|
+
</h4>
|
255
|
+
</div>
|
256
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
257
|
+
<h4>
|
258
|
+
<a href="/igrigorik/em-websocket/blob/v0.2.1/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.2.1" rel="nofollow">v0.2.1</a>
|
259
|
+
</h4>
|
260
|
+
</div>
|
261
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
262
|
+
<h4>
|
263
|
+
<a href="/igrigorik/em-websocket/blob/v0.2.0/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.2.0" rel="nofollow">v0.2.0</a>
|
264
|
+
</h4>
|
265
|
+
</div>
|
266
|
+
<div class="commitish-item tag-commitish selector-item js-navigation-item js-navigation-target">
|
267
|
+
<h4>
|
268
|
+
<a href="/igrigorik/em-websocket/blob/v0.1.4/examples/js/WebSocketMain.swf" class="js-navigation-open" data-name="v0.1.4" rel="nofollow">v0.1.4</a>
|
269
|
+
</h4>
|
270
|
+
</div>
|
271
|
+
</div>
|
272
|
+
</div>
|
273
|
+
</div><!-- /.commitish-context-context -->
|
274
|
+
</div>
|
275
|
+
|
276
|
+
</li>
|
277
|
+
</ul>
|
278
|
+
|
279
|
+
<ul class="subnav with-scope">
|
280
|
+
|
281
|
+
<li><a href="/igrigorik/em-websocket" class="selected" highlight="repo_source">Files</a></li>
|
282
|
+
<li><a href="/igrigorik/em-websocket/commits/master" highlight="repo_commits">Commits</a></li>
|
283
|
+
<li><a href="/igrigorik/em-websocket/branches" class="" highlight="repo_branches" rel="nofollow">Branches <span class="counter">1</span></a></li>
|
284
|
+
</ul>
|
285
|
+
|
286
|
+
</div>
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
</div><!-- /.repohead -->
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
<!-- block_view_fragment_key: views10/v8/blob:v21:94f3a5a925efb3e5d1158fd63e87ddaf -->
|
304
|
+
<div id="slider">
|
305
|
+
|
306
|
+
<div class="breadcrumb" data-path="examples/js/WebSocketMain.swf/">
|
307
|
+
<b itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/igrigorik/em-websocket/tree/b9d439cd3494db3225587ccf7cb060f4b37a9f13" class="js-rewrite-sha" itemprop="url"><span itemprop="title">em-websocket</span></a></b> / <span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/igrigorik/em-websocket/tree/b9d439cd3494db3225587ccf7cb060f4b37a9f13/examples" class="js-rewrite-sha" itemscope="url"><span itemprop="title">examples</span></a></span> / <span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/igrigorik/em-websocket/tree/b9d439cd3494db3225587ccf7cb060f4b37a9f13/examples/js" class="js-rewrite-sha" itemscope="url"><span itemprop="title">js</span></a></span> / <strong class="final-path">WebSocketMain.swf</strong> <span class="js-clippy mini-icon mini-icon-clippy " data-clipboard-text="examples/js/WebSocketMain.swf" data-copied-hint="copied!" data-copy-hint="copy to clipboard"></span>
|
308
|
+
</div>
|
309
|
+
|
310
|
+
|
311
|
+
<div class="commit file-history-tease" data-path="examples/js/WebSocketMain.swf/">
|
312
|
+
<img class="main-avatar" height="24" src="https://secure.gravatar.com/avatar/aeecf4f1c835bc7d53021bac0a8a7da9?s=140&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png" width="24" />
|
313
|
+
<span class="author">Bernard Potocki</span>
|
314
|
+
<time class="js-relative-date" datetime="2010-04-17T10:55:19-07:00" title="2010-04-17 10:55:19">April 17, 2010</time>
|
315
|
+
<div class="commit-title">
|
316
|
+
<a href="/igrigorik/em-websocket/commit/12e69e7b2793a134ae81a81dc0f3d035bb6a3393" class="message">Example of use in browser not supporting WebSocket using web-socket-js.</a>
|
317
|
+
</div>
|
318
|
+
|
319
|
+
<div class="participation">
|
320
|
+
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>0</strong> contributors</a></p>
|
321
|
+
|
322
|
+
</div>
|
323
|
+
<div id="blob_contributors_box" style="display:none">
|
324
|
+
<h2>Users on GitHub who have contributed to this file</h2>
|
325
|
+
<ul class="facebox-user-list">
|
326
|
+
</ul>
|
327
|
+
</div>
|
328
|
+
</div>
|
329
|
+
|
330
|
+
<div class="frames">
|
331
|
+
<div class="frame frame-center" data-path="examples/js/WebSocketMain.swf/" data-permalink-url="/igrigorik/em-websocket/blob/b9d439cd3494db3225587ccf7cb060f4b37a9f13/examples/js/WebSocketMain.swf" data-title="em-websocket/examples/js/WebSocketMain.swf at master · igrigorik/em-websocket · GitHub" data-type="blob">
|
332
|
+
|
333
|
+
<div id="files" class="bubble">
|
334
|
+
<div class="file">
|
335
|
+
<div class="meta">
|
336
|
+
<div class="info">
|
337
|
+
<span class="icon"><b class="mini-icon mini-icon-text-file"></b></span>
|
338
|
+
<span class="mode" title="File Mode">100644</span>
|
339
|
+
<span>11.791 kb</span>
|
340
|
+
</div>
|
341
|
+
<ul class="button-group actions">
|
342
|
+
|
343
|
+
<li>
|
344
|
+
<a href="/igrigorik/em-websocket/raw/master/examples/js/WebSocketMain.swf" class="minibutton btn-raw grouped-button bigger lighter" id="raw-url">Raw</a>
|
345
|
+
</li>
|
346
|
+
<li>
|
347
|
+
<a href="/igrigorik/em-websocket/commits/master/examples/js/WebSocketMain.swf" class="minibutton btn-history grouped-button bigger lighter" rel="nofollow">History</a>
|
348
|
+
</li>
|
349
|
+
</ul>
|
350
|
+
</div>
|
351
|
+
<div class="data type-text">
|
352
|
+
<div class="image">
|
353
|
+
<a href="/igrigorik/em-websocket/blob/master/examples/js/WebSocketMain.swf?raw=true">View Raw</a>
|
354
|
+
</div>
|
355
|
+
</div>
|
356
|
+
|
357
|
+
</div>
|
358
|
+
</div>
|
359
|
+
</div>
|
360
|
+
</div>
|
361
|
+
|
362
|
+
</div>
|
363
|
+
|
364
|
+
<div class="frame frame-loading large-loading-area" style="display:none;" data-tree-list-url="/igrigorik/em-websocket/tree-list/b9d439cd3494db3225587ccf7cb060f4b37a9f13" data-blob-url-prefix="/igrigorik/em-websocket/blob/b9d439cd3494db3225587ccf7cb060f4b37a9f13">
|
365
|
+
<img src="https://a248.e.akamai.net/assets.github.com/images/spinners/octocat-spinner-64.gif?1329872008" height="64" width="64">
|
366
|
+
</div>
|
367
|
+
|
368
|
+
</div>
|
369
|
+
<div class="context-overlay"></div>
|
370
|
+
</div>
|
371
|
+
|
372
|
+
<div id="footer-push"></div><!-- hack for sticky footer -->
|
373
|
+
</div><!-- end of wrapper - hack for sticky footer -->
|
374
|
+
|
375
|
+
<!-- footer -->
|
376
|
+
<div id="footer" >
|
377
|
+
|
378
|
+
<div class="upper_footer">
|
379
|
+
<div class="container clearfix">
|
380
|
+
|
381
|
+
<!--[if IE]><h4 id="blacktocat_ie">GitHub Links</h4><![endif]-->
|
382
|
+
<![if !IE]><h4 id="blacktocat">GitHub Links</h4><![endif]>
|
383
|
+
|
384
|
+
<ul class="footer_nav">
|
385
|
+
<h4>GitHub</h4>
|
386
|
+
<li><a href="https://github.com/about">About</a></li>
|
387
|
+
<li><a href="https://github.com/blog">Blog</a></li>
|
388
|
+
<li><a href="https://github.com/features">Features</a></li>
|
389
|
+
<li><a href="https://github.com/contact">Contact & Support</a></li>
|
390
|
+
<li><a href="https://github.com/training">Training</a></li>
|
391
|
+
<li><a href="http://enterprise.github.com/">GitHub Enterprise</a></li>
|
392
|
+
<li><a href="http://status.github.com/">Site Status</a></li>
|
393
|
+
</ul>
|
394
|
+
|
395
|
+
<ul class="footer_nav">
|
396
|
+
<h4>Tools</h4>
|
397
|
+
<li><a href="http://get.gaug.es/">Gauges: Analyze web traffic</a></li>
|
398
|
+
<li><a href="http://speakerdeck.com">Speaker Deck: Presentations</a></li>
|
399
|
+
<li><a href="https://gist.github.com">Gist: Code snippets</a></li>
|
400
|
+
<li><a href="http://mac.github.com/">GitHub for Mac</a></li>
|
401
|
+
<li><a href="http://windows.github.com/">GitHub for Windows</a></li>
|
402
|
+
<li><a href="http://mobile.github.com/">Issues for iPhone</a></li>
|
403
|
+
<li><a href="http://jobs.github.com/">Job Board</a></li>
|
404
|
+
</ul>
|
405
|
+
|
406
|
+
<ul class="footer_nav">
|
407
|
+
<h4>Extras</h4>
|
408
|
+
<li><a href="http://shop.github.com/">GitHub Shop</a></li>
|
409
|
+
<li><a href="http://octodex.github.com/">The Octodex</a></li>
|
410
|
+
</ul>
|
411
|
+
|
412
|
+
<ul class="footer_nav">
|
413
|
+
<h4>Documentation</h4>
|
414
|
+
<li><a href="http://help.github.com/">GitHub Help</a></li>
|
415
|
+
<li><a href="http://developer.github.com/">Developer API</a></li>
|
416
|
+
<li><a href="http://github.github.com/github-flavored-markdown/">GitHub Flavored Markdown</a></li>
|
417
|
+
<li><a href="http://pages.github.com/">GitHub Pages</a></li>
|
418
|
+
</ul>
|
419
|
+
|
420
|
+
</div><!-- /.site -->
|
421
|
+
</div><!-- /.upper_footer -->
|
422
|
+
|
423
|
+
<div class="lower_footer">
|
424
|
+
<div class="container clearfix">
|
425
|
+
<!--[if IE]><div id="legal_ie"><![endif]-->
|
426
|
+
<![if !IE]><div id="legal"><![endif]>
|
427
|
+
<ul>
|
428
|
+
<li><a href="https://github.com/site/terms">Terms of Service</a></li>
|
429
|
+
<li><a href="https://github.com/site/privacy">Privacy</a></li>
|
430
|
+
<li><a href="https://github.com/security">Security</a></li>
|
431
|
+
</ul>
|
432
|
+
|
433
|
+
<p>© 2012 <span title="0.11439s from fe6.rs.github.com">GitHub</span> Inc. All rights reserved.</p>
|
434
|
+
</div><!-- /#legal or /#legal_ie-->
|
435
|
+
|
436
|
+
<div class="sponsor">
|
437
|
+
<a href="http://www.rackspace.com" class="logo">
|
438
|
+
<img alt="Dedicated Server" height="36" src="https://a248.e.akamai.net/assets.github.com/images/modules/footer/rackspaces_logo.png?1329521041" width="38" />
|
439
|
+
</a>
|
440
|
+
Powered by the <a href="http://www.rackspace.com ">Dedicated
|
441
|
+
Servers</a> and<br/> <a href="http://www.rackspacecloud.com">Cloud
|
442
|
+
Computing</a> of Rackspace Hosting<span>®</span>
|
443
|
+
</div>
|
444
|
+
</div><!-- /.site -->
|
445
|
+
</div><!-- /.lower_footer -->
|
446
|
+
|
447
|
+
</div><!-- /#footer -->
|
448
|
+
|
449
|
+
|
450
|
+
|
451
|
+
<div id="keyboard_shortcuts_pane" class="instapaper_ignore readability-extra" style="display:none">
|
452
|
+
<h2>Keyboard Shortcuts <small><a href="#" class="js-see-all-keyboard-shortcuts">(see all)</a></small></h2>
|
453
|
+
|
454
|
+
<div class="columns threecols">
|
455
|
+
<div class="column first">
|
456
|
+
<h3>Site wide shortcuts</h3>
|
457
|
+
<dl class="keyboard-mappings">
|
458
|
+
<dt>s</dt>
|
459
|
+
<dd>Focus site search</dd>
|
460
|
+
</dl>
|
461
|
+
<dl class="keyboard-mappings">
|
462
|
+
<dt>?</dt>
|
463
|
+
<dd>Bring up this help dialog</dd>
|
464
|
+
</dl>
|
465
|
+
</div><!-- /.column.first -->
|
466
|
+
|
467
|
+
<div class="column middle" style='display:none'>
|
468
|
+
<h3>Commit list</h3>
|
469
|
+
<dl class="keyboard-mappings">
|
470
|
+
<dt>j</dt>
|
471
|
+
<dd>Move selection down</dd>
|
472
|
+
</dl>
|
473
|
+
<dl class="keyboard-mappings">
|
474
|
+
<dt>k</dt>
|
475
|
+
<dd>Move selection up</dd>
|
476
|
+
</dl>
|
477
|
+
<dl class="keyboard-mappings">
|
478
|
+
<dt>c <em>or</em> o <em>or</em> enter</dt>
|
479
|
+
<dd>Open commit</dd>
|
480
|
+
</dl>
|
481
|
+
<dl class="keyboard-mappings">
|
482
|
+
<dt>y</dt>
|
483
|
+
<dd>Expand URL to its canonical form</dd>
|
484
|
+
</dl>
|
485
|
+
</div><!-- /.column.first -->
|
486
|
+
|
487
|
+
<div class="column last" style='display:none'>
|
488
|
+
<h3>Pull request list</h3>
|
489
|
+
<dl class="keyboard-mappings">
|
490
|
+
<dt>j</dt>
|
491
|
+
<dd>Move selection down</dd>
|
492
|
+
</dl>
|
493
|
+
<dl class="keyboard-mappings">
|
494
|
+
<dt>k</dt>
|
495
|
+
<dd>Move selection up</dd>
|
496
|
+
</dl>
|
497
|
+
<dl class="keyboard-mappings">
|
498
|
+
<dt>o <em>or</em> enter</dt>
|
499
|
+
<dd>Open issue</dd>
|
500
|
+
</dl>
|
501
|
+
<dl class="keyboard-mappings">
|
502
|
+
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
|
503
|
+
<dd>Submit comment</dd>
|
504
|
+
</dl>
|
505
|
+
</div><!-- /.columns.last -->
|
506
|
+
|
507
|
+
</div><!-- /.columns.equacols -->
|
508
|
+
|
509
|
+
<div style='display:none'>
|
510
|
+
<div class="rule"></div>
|
511
|
+
|
512
|
+
<h3>Issues</h3>
|
513
|
+
|
514
|
+
<div class="columns threecols">
|
515
|
+
<div class="column first">
|
516
|
+
<dl class="keyboard-mappings">
|
517
|
+
<dt>j</dt>
|
518
|
+
<dd>Move selection down</dd>
|
519
|
+
</dl>
|
520
|
+
<dl class="keyboard-mappings">
|
521
|
+
<dt>k</dt>
|
522
|
+
<dd>Move selection up</dd>
|
523
|
+
</dl>
|
524
|
+
<dl class="keyboard-mappings">
|
525
|
+
<dt>x</dt>
|
526
|
+
<dd>Toggle selection</dd>
|
527
|
+
</dl>
|
528
|
+
<dl class="keyboard-mappings">
|
529
|
+
<dt>o <em>or</em> enter</dt>
|
530
|
+
<dd>Open issue</dd>
|
531
|
+
</dl>
|
532
|
+
<dl class="keyboard-mappings">
|
533
|
+
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
|
534
|
+
<dd>Submit comment</dd>
|
535
|
+
</dl>
|
536
|
+
</div><!-- /.column.first -->
|
537
|
+
<div class="column last">
|
538
|
+
<dl class="keyboard-mappings">
|
539
|
+
<dt>c</dt>
|
540
|
+
<dd>Create issue</dd>
|
541
|
+
</dl>
|
542
|
+
<dl class="keyboard-mappings">
|
543
|
+
<dt>l</dt>
|
544
|
+
<dd>Create label</dd>
|
545
|
+
</dl>
|
546
|
+
<dl class="keyboard-mappings">
|
547
|
+
<dt>i</dt>
|
548
|
+
<dd>Back to inbox</dd>
|
549
|
+
</dl>
|
550
|
+
<dl class="keyboard-mappings">
|
551
|
+
<dt>u</dt>
|
552
|
+
<dd>Back to issues</dd>
|
553
|
+
</dl>
|
554
|
+
<dl class="keyboard-mappings">
|
555
|
+
<dt>/</dt>
|
556
|
+
<dd>Focus issues search</dd>
|
557
|
+
</dl>
|
558
|
+
</div>
|
559
|
+
</div>
|
560
|
+
</div>
|
561
|
+
|
562
|
+
<div style='display:none'>
|
563
|
+
<div class="rule"></div>
|
564
|
+
|
565
|
+
<h3>Issues Dashboard</h3>
|
566
|
+
|
567
|
+
<div class="columns threecols">
|
568
|
+
<div class="column first">
|
569
|
+
<dl class="keyboard-mappings">
|
570
|
+
<dt>j</dt>
|
571
|
+
<dd>Move selection down</dd>
|
572
|
+
</dl>
|
573
|
+
<dl class="keyboard-mappings">
|
574
|
+
<dt>k</dt>
|
575
|
+
<dd>Move selection up</dd>
|
576
|
+
</dl>
|
577
|
+
<dl class="keyboard-mappings">
|
578
|
+
<dt>o <em>or</em> enter</dt>
|
579
|
+
<dd>Open issue</dd>
|
580
|
+
</dl>
|
581
|
+
</div><!-- /.column.first -->
|
582
|
+
</div>
|
583
|
+
</div>
|
584
|
+
|
585
|
+
<div style='display:none'>
|
586
|
+
<div class="rule"></div>
|
587
|
+
|
588
|
+
<h3>Network Graph</h3>
|
589
|
+
<div class="columns equacols">
|
590
|
+
<div class="column first">
|
591
|
+
<dl class="keyboard-mappings">
|
592
|
+
<dt><span class="badmono">←</span> <em>or</em> h</dt>
|
593
|
+
<dd>Scroll left</dd>
|
594
|
+
</dl>
|
595
|
+
<dl class="keyboard-mappings">
|
596
|
+
<dt><span class="badmono">→</span> <em>or</em> l</dt>
|
597
|
+
<dd>Scroll right</dd>
|
598
|
+
</dl>
|
599
|
+
<dl class="keyboard-mappings">
|
600
|
+
<dt><span class="badmono">↑</span> <em>or</em> k</dt>
|
601
|
+
<dd>Scroll up</dd>
|
602
|
+
</dl>
|
603
|
+
<dl class="keyboard-mappings">
|
604
|
+
<dt><span class="badmono">↓</span> <em>or</em> j</dt>
|
605
|
+
<dd>Scroll down</dd>
|
606
|
+
</dl>
|
607
|
+
<dl class="keyboard-mappings">
|
608
|
+
<dt>t</dt>
|
609
|
+
<dd>Toggle visibility of head labels</dd>
|
610
|
+
</dl>
|
611
|
+
</div><!-- /.column.first -->
|
612
|
+
<div class="column last">
|
613
|
+
<dl class="keyboard-mappings">
|
614
|
+
<dt>shift <span class="badmono">←</span> <em>or</em> shift h</dt>
|
615
|
+
<dd>Scroll all the way left</dd>
|
616
|
+
</dl>
|
617
|
+
<dl class="keyboard-mappings">
|
618
|
+
<dt>shift <span class="badmono">→</span> <em>or</em> shift l</dt>
|
619
|
+
<dd>Scroll all the way right</dd>
|
620
|
+
</dl>
|
621
|
+
<dl class="keyboard-mappings">
|
622
|
+
<dt>shift <span class="badmono">↑</span> <em>or</em> shift k</dt>
|
623
|
+
<dd>Scroll all the way up</dd>
|
624
|
+
</dl>
|
625
|
+
<dl class="keyboard-mappings">
|
626
|
+
<dt>shift <span class="badmono">↓</span> <em>or</em> shift j</dt>
|
627
|
+
<dd>Scroll all the way down</dd>
|
628
|
+
</dl>
|
629
|
+
</div><!-- /.column.last -->
|
630
|
+
</div>
|
631
|
+
</div>
|
632
|
+
|
633
|
+
<div >
|
634
|
+
<div class="rule"></div>
|
635
|
+
<div class="columns threecols">
|
636
|
+
<div class="column first" >
|
637
|
+
<h3>Source Code Browsing</h3>
|
638
|
+
<dl class="keyboard-mappings">
|
639
|
+
<dt>t</dt>
|
640
|
+
<dd>Activates the file finder</dd>
|
641
|
+
</dl>
|
642
|
+
<dl class="keyboard-mappings">
|
643
|
+
<dt>l</dt>
|
644
|
+
<dd>Jump to line</dd>
|
645
|
+
</dl>
|
646
|
+
<dl class="keyboard-mappings">
|
647
|
+
<dt>w</dt>
|
648
|
+
<dd>Switch branch/tag</dd>
|
649
|
+
</dl>
|
650
|
+
<dl class="keyboard-mappings">
|
651
|
+
<dt>y</dt>
|
652
|
+
<dd>Expand URL to its canonical form</dd>
|
653
|
+
</dl>
|
654
|
+
</div>
|
655
|
+
</div>
|
656
|
+
</div>
|
657
|
+
|
658
|
+
<div style='display:none'>
|
659
|
+
<div class="rule"></div>
|
660
|
+
<div class="columns threecols">
|
661
|
+
<div class="column first">
|
662
|
+
<h3>Browsing Commits</h3>
|
663
|
+
<dl class="keyboard-mappings">
|
664
|
+
<dt><span class="platform-mac">⌘</span><span class="platform-other">ctrl</span> <em>+</em> enter</dt>
|
665
|
+
<dd>Submit comment</dd>
|
666
|
+
</dl>
|
667
|
+
<dl class="keyboard-mappings">
|
668
|
+
<dt>escape</dt>
|
669
|
+
<dd>Close form</dd>
|
670
|
+
</dl>
|
671
|
+
<dl class="keyboard-mappings">
|
672
|
+
<dt>p</dt>
|
673
|
+
<dd>Parent commit</dd>
|
674
|
+
</dl>
|
675
|
+
<dl class="keyboard-mappings">
|
676
|
+
<dt>o</dt>
|
677
|
+
<dd>Other parent commit</dd>
|
678
|
+
</dl>
|
679
|
+
</div>
|
680
|
+
</div>
|
681
|
+
</div>
|
682
|
+
</div>
|
683
|
+
|
684
|
+
<div id="markdown-help" class="instapaper_ignore readability-extra">
|
685
|
+
<h2>Markdown Cheat Sheet</h2>
|
686
|
+
|
687
|
+
<div class="cheatsheet-content">
|
688
|
+
|
689
|
+
<div class="mod">
|
690
|
+
<div class="col">
|
691
|
+
<h3>Format Text</h3>
|
692
|
+
<p>Headers</p>
|
693
|
+
<pre>
|
694
|
+
# This is an <h1> tag
|
695
|
+
## This is an <h2> tag
|
696
|
+
###### This is an <h6> tag</pre>
|
697
|
+
<p>Text styles</p>
|
698
|
+
<pre>
|
699
|
+
*This text will be italic*
|
700
|
+
_This will also be italic_
|
701
|
+
**This text will be bold**
|
702
|
+
__This will also be bold__
|
703
|
+
|
704
|
+
*You **can** combine them*
|
705
|
+
</pre>
|
706
|
+
</div>
|
707
|
+
<div class="col">
|
708
|
+
<h3>Lists</h3>
|
709
|
+
<p>Unordered</p>
|
710
|
+
<pre>
|
711
|
+
* Item 1
|
712
|
+
* Item 2
|
713
|
+
* Item 2a
|
714
|
+
* Item 2b</pre>
|
715
|
+
<p>Ordered</p>
|
716
|
+
<pre>
|
717
|
+
1. Item 1
|
718
|
+
2. Item 2
|
719
|
+
3. Item 3
|
720
|
+
* Item 3a
|
721
|
+
* Item 3b</pre>
|
722
|
+
</div>
|
723
|
+
<div class="col">
|
724
|
+
<h3>Miscellaneous</h3>
|
725
|
+
<p>Images</p>
|
726
|
+
<pre>
|
727
|
+
![GitHub Logo](/images/logo.png)
|
728
|
+
Format: ![Alt Text](url)
|
729
|
+
</pre>
|
730
|
+
<p>Links</p>
|
731
|
+
<pre>
|
732
|
+
http://github.com - automatic!
|
733
|
+
[GitHub](http://github.com)</pre>
|
734
|
+
<p>Blockquotes</p>
|
735
|
+
<pre>
|
736
|
+
As Kanye West said:
|
737
|
+
|
738
|
+
> We're living the future so
|
739
|
+
> the present is our past.
|
740
|
+
</pre>
|
741
|
+
</div>
|
742
|
+
</div>
|
743
|
+
<div class="rule"></div>
|
744
|
+
|
745
|
+
<h3>Code Examples in Markdown</h3>
|
746
|
+
<div class="col">
|
747
|
+
<p>Syntax highlighting with <a href="http://github.github.com/github-flavored-markdown/" title="GitHub Flavored Markdown" target="_blank">GFM</a></p>
|
748
|
+
<pre>
|
749
|
+
```javascript
|
750
|
+
function fancyAlert(arg) {
|
751
|
+
if(arg) {
|
752
|
+
$.facebox({div:'#foo'})
|
753
|
+
}
|
754
|
+
}
|
755
|
+
```</pre>
|
756
|
+
</div>
|
757
|
+
<div class="col">
|
758
|
+
<p>Or, indent your code 4 spaces</p>
|
759
|
+
<pre>
|
760
|
+
Here is a Python code example
|
761
|
+
without syntax highlighting:
|
762
|
+
|
763
|
+
def foo:
|
764
|
+
if not bar:
|
765
|
+
return true</pre>
|
766
|
+
</div>
|
767
|
+
<div class="col">
|
768
|
+
<p>Inline code for comments</p>
|
769
|
+
<pre>
|
770
|
+
I think you should use an
|
771
|
+
`<addr>` element here instead.</pre>
|
772
|
+
</div>
|
773
|
+
</div>
|
774
|
+
|
775
|
+
</div>
|
776
|
+
</div>
|
777
|
+
|
778
|
+
|
779
|
+
<div id="ajax-error-message">
|
780
|
+
<span class="mini-icon mini-icon-exclamation"></span>
|
781
|
+
Something went wrong with that request. Please try again.
|
782
|
+
<a href="#" class="ajax-error-dismiss">Dismiss</a>
|
783
|
+
</div>
|
784
|
+
|
785
|
+
<div id="logo-popup">
|
786
|
+
<h2>Looking for the GitHub logo?</h2>
|
787
|
+
<ul>
|
788
|
+
<li>
|
789
|
+
<h4>GitHub Logo</h4>
|
790
|
+
<a href="http://github-media-downloads.s3.amazonaws.com/GitHub_Logos.zip"><img alt="Github_logo" src="https://a248.e.akamai.net/assets.github.com/images/modules/about_page/github_logo.png?1306884371" /></a>
|
791
|
+
<a href="http://github-media-downloads.s3.amazonaws.com/GitHub_Logos.zip" class="minibutton btn-download download">Download</a>
|
792
|
+
</li>
|
793
|
+
<li>
|
794
|
+
<h4>The Octocat</h4>
|
795
|
+
<a href="http://github-media-downloads.s3.amazonaws.com/Octocats.zip"><img alt="Octocat" src="https://a248.e.akamai.net/assets.github.com/images/modules/about_page/octocat.png?1306884371" /></a>
|
796
|
+
<a href="http://github-media-downloads.s3.amazonaws.com/Octocats.zip" class="minibutton btn-download download">Download</a>
|
797
|
+
</li>
|
798
|
+
</ul>
|
799
|
+
</div>
|
800
|
+
|
801
|
+
|
802
|
+
|
803
|
+
|
804
|
+
<span id='server_response_time' data-time='0.11641' data-host='fe6'></span>
|
805
|
+
</body>
|
806
|
+
</html>
|
807
|
+
|