noah 0.0.5-jruby → 0.1-jruby
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gemtest +0 -0
- data/.gitignore +10 -0
- data/LICENSE +201 -0
- data/README.md +68 -212
- data/Rakefile +65 -41
- data/TODO.md +65 -0
- data/bin/noah +2 -1
- data/bin/noah-watcher.rb +103 -0
- data/config.ru +6 -3
- data/config/warble.rb +18 -0
- data/examples/README.md +116 -0
- data/examples/cluster.ru +2 -0
- data/examples/custom-watcher.rb +10 -0
- data/examples/httpclient-server.rb +7 -0
- data/examples/httpclient.rb +12 -0
- data/examples/httpclient2.rb +28 -0
- data/examples/js/FABridge.js +1452 -0
- data/examples/js/WebSocketMain.swf +830 -0
- data/examples/js/swfobject.js +851 -0
- data/examples/js/web_socket.js +312 -0
- data/examples/logger.rb +11 -0
- data/examples/reconfiguring-sinatra-watcher.rb +11 -0
- data/examples/reconfiguring-sinatra.rb +33 -0
- data/examples/simple-post.rb +17 -0
- data/examples/websocket.html +24 -0
- data/examples/websocket.rb +41 -0
- data/lib/noah.rb +6 -8
- data/lib/noah/app.rb +20 -268
- data/lib/noah/application_routes.rb +70 -0
- data/lib/noah/ark.rb +0 -0
- data/lib/noah/configuration_routes.rb +81 -0
- data/lib/noah/custom_watcher.rb +79 -0
- data/lib/noah/ephemeral_routes.rb +47 -0
- data/lib/noah/helpers.rb +37 -14
- data/lib/noah/host_routes.rb +69 -0
- data/lib/noah/models.rb +86 -5
- data/lib/noah/models/applications.rb +41 -0
- data/lib/noah/models/configurations.rb +49 -0
- data/lib/noah/models/ephemerals.rb +54 -0
- data/lib/noah/models/hosts.rb +56 -0
- data/lib/noah/models/services.rb +54 -0
- data/lib/noah/models/watchers.rb +62 -0
- data/lib/noah/passthrough.rb +11 -0
- data/lib/noah/service_routes.rb +71 -0
- data/lib/noah/validations.rb +1 -0
- data/lib/noah/validations/watcher_validations.rb +48 -0
- data/lib/noah/version.rb +1 -1
- data/lib/noah/watcher_routes.rb +45 -0
- data/noah.gemspec +25 -17
- data/spec/application_spec.rb +30 -30
- data/spec/configuration_spec.rb +78 -14
- data/spec/ephemeral_spec.rb +59 -0
- data/spec/host_spec.rb +21 -21
- data/spec/noahapp_application_spec.rb +6 -6
- data/spec/noahapp_configuration_spec.rb +5 -5
- data/spec/noahapp_ephemeral_spec.rb +115 -0
- data/spec/noahapp_host_spec.rb +3 -3
- data/spec/noahapp_service_spec.rb +10 -10
- data/spec/noahapp_watcher_spec.rb +123 -0
- data/spec/service_spec.rb +27 -27
- data/spec/spec_helper.rb +13 -22
- data/spec/support/db/.keep +0 -0
- data/spec/support/test-redis.conf +8 -0
- data/spec/watcher_spec.rb +62 -0
- data/views/index.haml +21 -15
- metadata +189 -146
- data/Gemfile.lock +0 -83
- data/doc/coverage/index.html +0 -138
- data/doc/coverage/jquery-1.3.2.min.js +0 -19
- data/doc/coverage/jquery.tablesorter.min.js +0 -15
- data/doc/coverage/lib-helpers_rb.html +0 -393
- data/doc/coverage/lib-models_rb.html +0 -1449
- data/doc/coverage/noah_rb.html +0 -2019
- data/doc/coverage/print.css +0 -12
- data/doc/coverage/rcov.js +0 -42
- data/doc/coverage/screen.css +0 -270
- data/lib/noah/applications.rb +0 -46
- data/lib/noah/configurations.rb +0 -49
- data/lib/noah/hosts.rb +0 -54
- data/lib/noah/services.rb +0 -57
- data/lib/noah/watchers.rb +0 -18
@@ -0,0 +1,830 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
<!DOCTYPE html>
|
7
|
+
<html>
|
8
|
+
<head>
|
9
|
+
<meta charset='utf-8'>
|
10
|
+
<meta http-equiv="X-UA-Compatible" content="chrome=1">
|
11
|
+
<title>examples/js/WebSocketMain.swf at master from igrigorik's em-websocket - GitHub</title>
|
12
|
+
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
|
13
|
+
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
|
14
|
+
|
15
|
+
<link href="https://assets2.github.com/stylesheets/bundle_common.css?fcea8a71e43a6abea9b38ae62a9eeb7e84f5652a" media="screen" rel="stylesheet" type="text/css" />
|
16
|
+
<link href="https://assets1.github.com/stylesheets/bundle_github.css?fcea8a71e43a6abea9b38ae62a9eeb7e84f5652a" media="screen" rel="stylesheet" type="text/css" />
|
17
|
+
|
18
|
+
<script type="text/javascript">
|
19
|
+
if (typeof console == "undefined" || typeof console.log == "undefined")
|
20
|
+
console = { log: function() {} }
|
21
|
+
</script>
|
22
|
+
<script type="text/javascript" charset="utf-8">
|
23
|
+
var GitHub = {}
|
24
|
+
var github_user = null
|
25
|
+
|
26
|
+
</script>
|
27
|
+
<script src="https://assets3.github.com/javascripts/jquery/jquery-1.4.2.min.js?fcea8a71e43a6abea9b38ae62a9eeb7e84f5652a" type="text/javascript"></script>
|
28
|
+
<script src="https://assets0.github.com/javascripts/bundle_common.js?fcea8a71e43a6abea9b38ae62a9eeb7e84f5652a" type="text/javascript"></script>
|
29
|
+
<script src="https://assets0.github.com/javascripts/bundle_github.js?fcea8a71e43a6abea9b38ae62a9eeb7e84f5652a" type="text/javascript"></script>
|
30
|
+
|
31
|
+
|
32
|
+
<script type="text/javascript" charset="utf-8">
|
33
|
+
GitHub.spy({
|
34
|
+
repo: "igrigorik/em-websocket"
|
35
|
+
})
|
36
|
+
</script>
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
<link href="https://github.com/igrigorik/em-websocket/commits/master.atom" rel="alternate" title="Recent Commits to em-websocket:master" type="application/atom+xml" />
|
44
|
+
|
45
|
+
<meta name="description" content="EventMachine based WebSocket server" />
|
46
|
+
<script type="text/javascript">
|
47
|
+
GitHub.nameWithOwner = GitHub.nameWithOwner || "igrigorik/em-websocket";
|
48
|
+
GitHub.currentRef = 'master';
|
49
|
+
GitHub.commitSHA = "cdedd7bd5c43e25fd0b30236889bc131b5cbe495";
|
50
|
+
GitHub.currentPath = 'examples/js/WebSocketMain.swf';
|
51
|
+
GitHub.masterBranch = "master";
|
52
|
+
|
53
|
+
|
54
|
+
</script>
|
55
|
+
|
56
|
+
|
57
|
+
<script type="text/javascript">
|
58
|
+
var _gaq = _gaq || [];
|
59
|
+
_gaq.push(['_setAccount', 'UA-3769691-2']);
|
60
|
+
_gaq.push(['_trackPageview']);
|
61
|
+
(function() {
|
62
|
+
var ga = document.createElement('script');
|
63
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
64
|
+
ga.setAttribute('async', 'true');
|
65
|
+
document.documentElement.firstChild.appendChild(ga);
|
66
|
+
})();
|
67
|
+
</script>
|
68
|
+
|
69
|
+
<script type="text/javascript">
|
70
|
+
var mpq = [];
|
71
|
+
mpq.push(["init", "65fde2abd433eae3b32b38b7ebd2f37e"]);
|
72
|
+
(function() {
|
73
|
+
var mp = document.createElement("script"); mp.type = "text/javascript"; mp.async = true;
|
74
|
+
mp.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + "//api.mixpanel.com/site_media/js/api/mixpanel.js";
|
75
|
+
var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(mp, s);
|
76
|
+
})();
|
77
|
+
</script>
|
78
|
+
|
79
|
+
</head>
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
<body class="logged_out page-blob">
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
<div class="subnavd" id="main">
|
95
|
+
<div id="header" class="true">
|
96
|
+
|
97
|
+
<a class="logo boring" href="https://github.com">
|
98
|
+
<img src="/images/modules/header/logov3.png?changed" class="default" alt="github" />
|
99
|
+
<![if !IE]>
|
100
|
+
<img src="/images/modules/header/logov3-hover.png" class="hover" alt="github" />
|
101
|
+
<![endif]>
|
102
|
+
</a>
|
103
|
+
|
104
|
+
|
105
|
+
<div class="topsearch">
|
106
|
+
|
107
|
+
<ul class="nav logged_out">
|
108
|
+
<li class="pricing"><a href="/plans">Pricing and Signup</a></li>
|
109
|
+
<li class="explore"><a href="/explore">Explore GitHub</a></li>
|
110
|
+
<li class="features"><a href="/features">Features</a></li>
|
111
|
+
<li class="blog"><a href="/blog">Blog</a></li>
|
112
|
+
<li class="login"><a href="/login?return_to=https://github.com/igrigorik/em-websocket/blob/master/examples/js/WebSocketMain.swf">Login</a></li>
|
113
|
+
</ul>
|
114
|
+
|
115
|
+
</div>
|
116
|
+
|
117
|
+
</div>
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
<div class="site">
|
123
|
+
<div class="pagehead repohead vis-public ">
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
<div class="title-actions-bar">
|
128
|
+
<h1>
|
129
|
+
<a href="/igrigorik">igrigorik</a> / <strong><a href="https://github.com/igrigorik/em-websocket">em-websocket</a></strong>
|
130
|
+
|
131
|
+
|
132
|
+
</h1>
|
133
|
+
|
134
|
+
|
135
|
+
<ul class="actions">
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
<li class="for-owner" style="display:none"><a href="https://github.com/igrigorik/em-websocket/admin" class="minibutton btn-admin "><span><span class="icon"></span>Admin</span></a></li>
|
140
|
+
<li>
|
141
|
+
<a href="/igrigorik/em-websocket/toggle_watch" class="minibutton btn-watch " id="watch_button" onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', '7ee0ec2c300dda8607aa77a9bf60aa6ef031c060'); f.appendChild(s);f.submit();return false;" style="display:none"><span><span class="icon"></span>Watch</span></a>
|
142
|
+
<a href="/igrigorik/em-websocket/toggle_watch" class="minibutton btn-watch " id="unwatch_button" onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', '7ee0ec2c300dda8607aa77a9bf60aa6ef031c060'); f.appendChild(s);f.submit();return false;" style="display:none"><span><span class="icon"></span>Unwatch</span></a>
|
143
|
+
</li>
|
144
|
+
|
145
|
+
|
146
|
+
<li class="for-notforked" style="display:none"><a href="/igrigorik/em-websocket/fork" class="minibutton btn-fork " id="fork_button" onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', '7ee0ec2c300dda8607aa77a9bf60aa6ef031c060'); f.appendChild(s);f.submit();return false;"><span><span class="icon"></span>Fork</span></a></li>
|
147
|
+
<li class="for-hasfork" style="display:none"><a href="#" class="minibutton btn-fork " id="your_fork_button"><span><span class="icon"></span>Your Fork</span></a></li>
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
<li class="repostats">
|
155
|
+
<ul class="repo-stats">
|
156
|
+
<li class="watchers"><a href="/igrigorik/em-websocket/watchers" title="Watchers" class="tooltipped downwards">365</a></li>
|
157
|
+
<li class="forks"><a href="/igrigorik/em-websocket/network" title="Forks" class="tooltipped downwards">20</a></li>
|
158
|
+
</ul>
|
159
|
+
</li>
|
160
|
+
</ul>
|
161
|
+
|
162
|
+
</div>
|
163
|
+
|
164
|
+
|
165
|
+
<ul class="tabs">
|
166
|
+
<li><a href="https://github.com/igrigorik/em-websocket" class="selected" highlight="repo_source">Source</a></li>
|
167
|
+
<li><a href="https://github.com/igrigorik/em-websocket/commits/master" highlight="repo_commits">Commits</a></li>
|
168
|
+
<li><a href="/igrigorik/em-websocket/network" highlight="repo_network">Network</a></li>
|
169
|
+
<li><a href="/igrigorik/em-websocket/pulls" highlight="repo_pulls">Pull Requests (1)</a></li>
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
<li><a href="/igrigorik/em-websocket/issues" highlight="issues">Issues (7)</a></li>
|
176
|
+
|
177
|
+
|
178
|
+
<li><a href="/igrigorik/em-websocket/wiki" highlight="repo_wiki">Wiki (1)</a></li>
|
179
|
+
|
180
|
+
<li><a href="/igrigorik/em-websocket/graphs" highlight="repo_graphs">Graphs</a></li>
|
181
|
+
|
182
|
+
<li class="contextswitch nochoices">
|
183
|
+
<span class="toggle leftwards" >
|
184
|
+
<em>Branch:</em>
|
185
|
+
<code>master</code>
|
186
|
+
</span>
|
187
|
+
</li>
|
188
|
+
</ul>
|
189
|
+
|
190
|
+
<div style="display:none" id="pl-description"><p><em class="placeholder">click here to add a description</em></p></div>
|
191
|
+
<div style="display:none" id="pl-homepage"><p><em class="placeholder">click here to add a homepage</em></p></div>
|
192
|
+
|
193
|
+
<div class="subnav-bar">
|
194
|
+
|
195
|
+
<ul>
|
196
|
+
<li>
|
197
|
+
<a href="#" class="dropdown">Switch Branches (4)</a>
|
198
|
+
<ul>
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
<li><a href="/igrigorik/em-websocket/blob/draft03/examples/js/WebSocketMain.swf" action="show">draft03</a></li>
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
<li><strong>master ✓</strong></li>
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
<li><a href="/igrigorik/em-websocket/blob/onerror/examples/js/WebSocketMain.swf" action="show">onerror</a></li>
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
<li><a href="/igrigorik/em-websocket/blob/ruby19fixes/examples/js/WebSocketMain.swf" action="show">ruby19fixes</a></li>
|
216
|
+
|
217
|
+
|
218
|
+
</ul>
|
219
|
+
</li>
|
220
|
+
<li>
|
221
|
+
<a href="#" class="dropdown ">Switch Tags (2)</a>
|
222
|
+
<ul>
|
223
|
+
|
224
|
+
<li><a href="/igrigorik/em-websocket/blob/v0.2.0/examples/js/WebSocketMain.swf">v0.2.0</a></li>
|
225
|
+
|
226
|
+
|
227
|
+
<li><a href="/igrigorik/em-websocket/blob/v0.1.4/examples/js/WebSocketMain.swf">v0.1.4</a></li>
|
228
|
+
|
229
|
+
</ul>
|
230
|
+
|
231
|
+
</li>
|
232
|
+
<li>
|
233
|
+
|
234
|
+
<a href="/igrigorik/em-websocket/branches" class="manage">Branch List</a>
|
235
|
+
|
236
|
+
</li>
|
237
|
+
</ul>
|
238
|
+
</div>
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
|
250
|
+
<div class="frame frame-center tree-finder" style="display: none">
|
251
|
+
<div class="breadcrumb">
|
252
|
+
<b><a href="/igrigorik/em-websocket">em-websocket</a></b> /
|
253
|
+
<input class="tree-finder-input" type="text" name="query" autocomplete="off" spellcheck="false">
|
254
|
+
</div>
|
255
|
+
|
256
|
+
|
257
|
+
<div class="octotip">
|
258
|
+
<p>
|
259
|
+
<a href="/igrigorik/em-websocket/dismiss-tree-finder-help" class="dismiss js-dismiss-tree-list-help" title="Hide this notice forever">Dismiss</a>
|
260
|
+
<strong>Octotip:</strong> You've activated the <em>file finder</em> by pressing <span class="kbd">t</span>
|
261
|
+
Start typing to filter the file list. Use <span class="kbd badmono">↑</span> and <span class="kbd badmono">↓</span> to navigate,
|
262
|
+
<span class="kbd">enter</span> to view files.
|
263
|
+
</p>
|
264
|
+
</div>
|
265
|
+
|
266
|
+
|
267
|
+
<table class="tree-browser" cellpadding="0" cellspacing="0">
|
268
|
+
<tr class="js-header"><th> </th><th>name</th></tr>
|
269
|
+
<tr class="js-no-results no-results" style="display: none">
|
270
|
+
<th colspan="2">No matching files</th>
|
271
|
+
</tr>
|
272
|
+
<tbody class="js-results-list">
|
273
|
+
</tbody>
|
274
|
+
</table>
|
275
|
+
</div>
|
276
|
+
|
277
|
+
<div id="repo_details" class="metabox clearfix">
|
278
|
+
<div id="repo_details_loader" class="metabox-loader" style="display:none">Sending Request…</div>
|
279
|
+
|
280
|
+
<a href="/igrigorik/em-websocket/downloads" class="download-source" id="download_button" title="Download source, tagged packages and binaries."><span class="icon"></span>Downloads</a>
|
281
|
+
|
282
|
+
<div id="repository_desc_wrapper">
|
283
|
+
<div id="repository_description" rel="repository_description_edit">
|
284
|
+
|
285
|
+
<p>EventMachine based WebSocket server
|
286
|
+
<span id="read_more" style="display:none">— <a href="#readme">Read more</a></span>
|
287
|
+
</p>
|
288
|
+
|
289
|
+
</div>
|
290
|
+
|
291
|
+
<div id="repository_description_edit" style="display:none;" class="inline-edit">
|
292
|
+
<form action="/igrigorik/em-websocket/admin/update" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="7ee0ec2c300dda8607aa77a9bf60aa6ef031c060" /></div>
|
293
|
+
<input type="hidden" name="field" value="repository_description">
|
294
|
+
<input type="text" class="textfield" name="value" value="EventMachine based WebSocket server">
|
295
|
+
<div class="form-actions">
|
296
|
+
<button class="minibutton"><span>Save</span></button> <a href="#" class="cancel">Cancel</a>
|
297
|
+
</div>
|
298
|
+
</form>
|
299
|
+
</div>
|
300
|
+
|
301
|
+
|
302
|
+
<div class="repository-homepage" id="repository_homepage" rel="repository_homepage_edit">
|
303
|
+
<p><a href="http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/" rel="nofollow">http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/</a></p>
|
304
|
+
</div>
|
305
|
+
|
306
|
+
<div id="repository_homepage_edit" style="display:none;" class="inline-edit">
|
307
|
+
<form action="/igrigorik/em-websocket/admin/update" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="7ee0ec2c300dda8607aa77a9bf60aa6ef031c060" /></div>
|
308
|
+
<input type="hidden" name="field" value="repository_homepage">
|
309
|
+
<input type="text" class="textfield" name="value" value="http://www.igvita.com/2009/12/22/ruby-websockets-tcp-for-the-browser/">
|
310
|
+
<div class="form-actions">
|
311
|
+
<button class="minibutton"><span>Save</span></button> <a href="#" class="cancel">Cancel</a>
|
312
|
+
</div>
|
313
|
+
</form>
|
314
|
+
</div>
|
315
|
+
</div>
|
316
|
+
<div class="rule "></div>
|
317
|
+
<div id="url_box" class="url-box">
|
318
|
+
<ul class="clone-urls">
|
319
|
+
|
320
|
+
|
321
|
+
<li id="http_clone_url"><a href="https://github.com/igrigorik/em-websocket.git" data-permissions="Read-Only">HTTP</a></li>
|
322
|
+
<li id="public_clone_url"><a href="git://github.com/igrigorik/em-websocket.git" data-permissions="Read-Only">Git Read-Only</a></li>
|
323
|
+
|
324
|
+
|
325
|
+
</ul>
|
326
|
+
<input type="text" spellcheck="false" id="url_field" class="url-field" />
|
327
|
+
<span style="display:none" id="url_box_clippy"></span>
|
328
|
+
<span id="clippy_tooltip_url_box_clippy" class="clippy-tooltip tooltipped" title="copy to clipboard">
|
329
|
+
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
|
330
|
+
width="14"
|
331
|
+
height="14"
|
332
|
+
class="clippy"
|
333
|
+
id="clippy" >
|
334
|
+
<param name="movie" value="https://assets3.github.com/flash/clippy.swf?v5"/>
|
335
|
+
<param name="allowScriptAccess" value="always" />
|
336
|
+
<param name="quality" value="high" />
|
337
|
+
<param name="scale" value="noscale" />
|
338
|
+
<param NAME="FlashVars" value="id=url_box_clippy&copied=&copyto=">
|
339
|
+
<param name="bgcolor" value="#FFFFFF">
|
340
|
+
<param name="wmode" value="opaque">
|
341
|
+
<embed src="https://assets3.github.com/flash/clippy.swf?v5"
|
342
|
+
width="14"
|
343
|
+
height="14"
|
344
|
+
name="clippy"
|
345
|
+
quality="high"
|
346
|
+
allowScriptAccess="always"
|
347
|
+
type="application/x-shockwave-flash"
|
348
|
+
pluginspage="http://www.macromedia.com/go/getflashplayer"
|
349
|
+
FlashVars="id=url_box_clippy&copied=&copyto="
|
350
|
+
bgcolor="#FFFFFF"
|
351
|
+
wmode="opaque"
|
352
|
+
/>
|
353
|
+
</object>
|
354
|
+
</span>
|
355
|
+
|
356
|
+
<p id="url_description">This URL has <strong>Read+Write</strong> access</p>
|
357
|
+
</div>
|
358
|
+
</div>
|
359
|
+
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
</div><!-- /.pagehead -->
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
<script type="text/javascript">
|
372
|
+
GitHub.downloadRepo = '/igrigorik/em-websocket/archives/master'
|
373
|
+
GitHub.revType = "master"
|
374
|
+
|
375
|
+
GitHub.controllerName = "blob"
|
376
|
+
GitHub.actionName = "show"
|
377
|
+
GitHub.currentAction = "blob#show"
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
|
382
|
+
</script>
|
383
|
+
|
384
|
+
|
385
|
+
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
+
<div class="flash-messages"></div>
|
390
|
+
|
391
|
+
|
392
|
+
<div id="commit">
|
393
|
+
<div class="group">
|
394
|
+
|
395
|
+
<div class="envelope commit">
|
396
|
+
<div class="human">
|
397
|
+
|
398
|
+
<div class="message"><pre><a href="/igrigorik/em-websocket/commit/cdedd7bd5c43e25fd0b30236889bc131b5cbe495">Added Gemfile.lock to gitignore</a> </pre></div>
|
399
|
+
|
400
|
+
|
401
|
+
<div class="actor">
|
402
|
+
<div class="gravatar">
|
403
|
+
|
404
|
+
<img src="https://secure.gravatar.com/avatar/b96c2426a6ef84c069876e80e49a600b?s=140&d=https://github.com%2Fimages%2Fgravatars%2Fgravatar-140.png" alt="" width="30" height="30" />
|
405
|
+
</div>
|
406
|
+
<div class="name"><a href="/mloughran">mloughran</a> <span>(author)</span></div>
|
407
|
+
<div class="date">
|
408
|
+
<abbr class="relatize" title="2011-02-07 04:29:18">Mon Feb 07 04:29:18 -0800 2011</abbr>
|
409
|
+
</div>
|
410
|
+
</div>
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
</div>
|
415
|
+
<div class="machine">
|
416
|
+
<span>c</span>ommit <a href="/igrigorik/em-websocket/commit/cdedd7bd5c43e25fd0b30236889bc131b5cbe495" hotkey="c">cdedd7bd5c43e25fd0b3</a><br />
|
417
|
+
<span>t</span>ree <a href="/igrigorik/em-websocket/tree/cdedd7bd5c43e25fd0b30236889bc131b5cbe495" hotkey="t">087af53398020bbc09b5</a><br />
|
418
|
+
|
419
|
+
<span>p</span>arent
|
420
|
+
|
421
|
+
<a href="/igrigorik/em-websocket/tree/97c850128ccd49063d12dde2512cbdd1d3c128a2" hotkey="p">97c850128ccd49063d12</a>
|
422
|
+
|
423
|
+
|
424
|
+
</div>
|
425
|
+
</div>
|
426
|
+
|
427
|
+
</div>
|
428
|
+
</div>
|
429
|
+
|
430
|
+
|
431
|
+
|
432
|
+
<div id="slider">
|
433
|
+
|
434
|
+
|
435
|
+
|
436
|
+
<div class="breadcrumb" data-path="examples/js/WebSocketMain.swf/">
|
437
|
+
<b><a href="/igrigorik/em-websocket/tree/cdedd7bd5c43e25fd0b30236889bc131b5cbe495">em-websocket</a></b> / <a href="/igrigorik/em-websocket/tree/cdedd7bd5c43e25fd0b30236889bc131b5cbe495/examples">examples</a> / <a href="/igrigorik/em-websocket/tree/cdedd7bd5c43e25fd0b30236889bc131b5cbe495/examples/js">js</a> / WebSocketMain.swf <span style="display:none" id="clippy_3183">examples/js/WebSocketMain.swf</span>
|
438
|
+
|
439
|
+
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
|
440
|
+
width="110"
|
441
|
+
height="14"
|
442
|
+
class="clippy"
|
443
|
+
id="clippy" >
|
444
|
+
<param name="movie" value="https://assets2.github.com/flash/clippy.swf?v5"/>
|
445
|
+
<param name="allowScriptAccess" value="always" />
|
446
|
+
<param name="quality" value="high" />
|
447
|
+
<param name="scale" value="noscale" />
|
448
|
+
<param NAME="FlashVars" value="id=clippy_3183&copied=copied!&copyto=copy to clipboard">
|
449
|
+
<param name="bgcolor" value="#FFFFFF">
|
450
|
+
<param name="wmode" value="opaque">
|
451
|
+
<embed src="https://assets2.github.com/flash/clippy.swf?v5"
|
452
|
+
width="110"
|
453
|
+
height="14"
|
454
|
+
name="clippy"
|
455
|
+
quality="high"
|
456
|
+
allowScriptAccess="always"
|
457
|
+
type="application/x-shockwave-flash"
|
458
|
+
pluginspage="http://www.macromedia.com/go/getflashplayer"
|
459
|
+
FlashVars="id=clippy_3183&copied=copied!&copyto=copy to clipboard"
|
460
|
+
bgcolor="#FFFFFF"
|
461
|
+
wmode="opaque"
|
462
|
+
/>
|
463
|
+
</object>
|
464
|
+
|
465
|
+
|
466
|
+
</div>
|
467
|
+
|
468
|
+
<div class="frames">
|
469
|
+
<div class="frame frame-center" data-path="examples/js/WebSocketMain.swf/">
|
470
|
+
|
471
|
+
|
472
|
+
<div id="files">
|
473
|
+
<div class="file">
|
474
|
+
<div class="meta">
|
475
|
+
<div class="info">
|
476
|
+
<span class="icon"><img alt="Txt" height="16" src="https://assets3.github.com/images/icons/txt.png?03ad842eba9fc581233193a04c4cc3290def09be" width="16" /></span>
|
477
|
+
<span class="mode" title="File Mode">100644</span>
|
478
|
+
|
479
|
+
<span>11.791 kb</span>
|
480
|
+
</div>
|
481
|
+
<ul class="actions">
|
482
|
+
<li><a href="/igrigorik/em-websocket/raw/master/examples/js/WebSocketMain.swf" id="raw-url">raw</a></li>
|
483
|
+
|
484
|
+
<li><a href="/igrigorik/em-websocket/commits/master/examples/js/WebSocketMain.swf">history</a></li>
|
485
|
+
</ul>
|
486
|
+
</div>
|
487
|
+
|
488
|
+
<div class="data type-text">
|
489
|
+
|
490
|
+
<div class="image">
|
491
|
+
|
492
|
+
|
493
|
+
<a href="/igrigorik/em-websocket/raw/master/examples/js/WebSocketMain.swf">View Raw</a>
|
494
|
+
|
495
|
+
</div>
|
496
|
+
|
497
|
+
</div>
|
498
|
+
|
499
|
+
|
500
|
+
</div>
|
501
|
+
</div>
|
502
|
+
</div>
|
503
|
+
</div>
|
504
|
+
|
505
|
+
|
506
|
+
</div>
|
507
|
+
|
508
|
+
|
509
|
+
<div class="frame frame-loading" style="display:none;">
|
510
|
+
<img src="/images/modules/ajax/big_spinner_336699.gif">
|
511
|
+
</div>
|
512
|
+
|
513
|
+
</div>
|
514
|
+
|
515
|
+
|
516
|
+
</div>
|
517
|
+
|
518
|
+
<div id="footer" class="clearfix">
|
519
|
+
<div class="site">
|
520
|
+
<div class="sponsor">
|
521
|
+
<a href="http://www.rackspace.com" class="logo">
|
522
|
+
<img alt="Dedicated Server" src="https://assets1.github.com/images/modules/footer/rackspace_logo.png?v2?fcea8a71e43a6abea9b38ae62a9eeb7e84f5652a" />
|
523
|
+
</a>
|
524
|
+
Powered by the <a href="http://www.rackspace.com ">Dedicated
|
525
|
+
Servers</a> and<br/> <a href="http://www.rackspacecloud.com">Cloud
|
526
|
+
Computing</a> of Rackspace Hosting<span>®</span>
|
527
|
+
</div>
|
528
|
+
|
529
|
+
<ul class="links">
|
530
|
+
<li class="blog"><a href="https://github.com/blog">Blog</a></li>
|
531
|
+
<li><a href="http://support.github.com">Support</a></li>
|
532
|
+
<li><a href="https://github.com/training">Training</a></li>
|
533
|
+
<li><a href="http://jobs.github.com">Job Board</a></li>
|
534
|
+
<li><a href="http://shop.github.com">Shop</a></li>
|
535
|
+
<li><a href="https://github.com/contact">Contact</a></li>
|
536
|
+
<li><a href="http://develop.github.com">API</a></li>
|
537
|
+
<li><a href="http://status.github.com">Status</a></li>
|
538
|
+
</ul>
|
539
|
+
<ul class="sosueme">
|
540
|
+
<li class="main">© 2011 <span id="_rrt" title="0.09310s from fe4.rs.github.com">GitHub</span> Inc. All rights reserved.</li>
|
541
|
+
<li><a href="/site/terms">Terms of Service</a></li>
|
542
|
+
<li><a href="/site/privacy">Privacy</a></li>
|
543
|
+
<li><a href="https://github.com/security">Security</a></li>
|
544
|
+
</ul>
|
545
|
+
</div>
|
546
|
+
</div><!-- /#footer -->
|
547
|
+
|
548
|
+
|
549
|
+
|
550
|
+
|
551
|
+
<!-- current locale: -->
|
552
|
+
<div class="locales">
|
553
|
+
<div class="site">
|
554
|
+
|
555
|
+
<ul class="choices clearfix limited-locales">
|
556
|
+
<li><span class="current">English</span></li>
|
557
|
+
|
558
|
+
<li><a rel="nofollow" href="?locale=de">Deutsch</a></li>
|
559
|
+
|
560
|
+
<li><a rel="nofollow" href="?locale=fr">Français</a></li>
|
561
|
+
|
562
|
+
<li><a rel="nofollow" href="?locale=ja">日本語</a></li>
|
563
|
+
|
564
|
+
<li><a rel="nofollow" href="?locale=pt-BR">Português (BR)</a></li>
|
565
|
+
|
566
|
+
<li><a rel="nofollow" href="?locale=ru">Русский</a></li>
|
567
|
+
|
568
|
+
<li><a rel="nofollow" href="?locale=zh">中文</a></li>
|
569
|
+
|
570
|
+
<li class="all"><a href="#" class="minibutton btn-forward js-all-locales"><span><span class="icon"></span>See all available languages</span></a></li>
|
571
|
+
</ul>
|
572
|
+
|
573
|
+
<div class="all-locales clearfix">
|
574
|
+
<h3>Your current locale selection: <strong>English</strong>. Choose another?</h3>
|
575
|
+
|
576
|
+
|
577
|
+
<ul class="choices">
|
578
|
+
|
579
|
+
<li><a rel="nofollow" href="?locale=en">English</a></li>
|
580
|
+
|
581
|
+
<li><a rel="nofollow" href="?locale=af">Afrikaans</a></li>
|
582
|
+
|
583
|
+
<li><a rel="nofollow" href="?locale=ca">Català</a></li>
|
584
|
+
|
585
|
+
<li><a rel="nofollow" href="?locale=cs">Čeština</a></li>
|
586
|
+
|
587
|
+
</ul>
|
588
|
+
|
589
|
+
<ul class="choices">
|
590
|
+
|
591
|
+
<li><a rel="nofollow" href="?locale=de">Deutsch</a></li>
|
592
|
+
|
593
|
+
<li><a rel="nofollow" href="?locale=es">Español</a></li>
|
594
|
+
|
595
|
+
<li><a rel="nofollow" href="?locale=fr">Français</a></li>
|
596
|
+
|
597
|
+
<li><a rel="nofollow" href="?locale=hr">Hrvatski</a></li>
|
598
|
+
|
599
|
+
</ul>
|
600
|
+
|
601
|
+
<ul class="choices">
|
602
|
+
|
603
|
+
<li><a rel="nofollow" href="?locale=id">Indonesia</a></li>
|
604
|
+
|
605
|
+
<li><a rel="nofollow" href="?locale=it">Italiano</a></li>
|
606
|
+
|
607
|
+
<li><a rel="nofollow" href="?locale=ja">日本語</a></li>
|
608
|
+
|
609
|
+
<li><a rel="nofollow" href="?locale=nl">Nederlands</a></li>
|
610
|
+
|
611
|
+
</ul>
|
612
|
+
|
613
|
+
<ul class="choices">
|
614
|
+
|
615
|
+
<li><a rel="nofollow" href="?locale=no">Norsk</a></li>
|
616
|
+
|
617
|
+
<li><a rel="nofollow" href="?locale=pl">Polski</a></li>
|
618
|
+
|
619
|
+
<li><a rel="nofollow" href="?locale=pt-BR">Português (BR)</a></li>
|
620
|
+
|
621
|
+
<li><a rel="nofollow" href="?locale=ru">Русский</a></li>
|
622
|
+
|
623
|
+
</ul>
|
624
|
+
|
625
|
+
<ul class="choices">
|
626
|
+
|
627
|
+
<li><a rel="nofollow" href="?locale=sr">Српски</a></li>
|
628
|
+
|
629
|
+
<li><a rel="nofollow" href="?locale=sv">Svenska</a></li>
|
630
|
+
|
631
|
+
<li><a rel="nofollow" href="?locale=zh">中文</a></li>
|
632
|
+
|
633
|
+
</ul>
|
634
|
+
|
635
|
+
</div>
|
636
|
+
|
637
|
+
</div>
|
638
|
+
<div class="fade"></div>
|
639
|
+
</div>
|
640
|
+
|
641
|
+
|
642
|
+
|
643
|
+
<script>window._auth_token = "7ee0ec2c300dda8607aa77a9bf60aa6ef031c060"</script>
|
644
|
+
<div id="keyboard_shortcuts_pane" style="display:none">
|
645
|
+
<h2>Keyboard Shortcuts</h2>
|
646
|
+
|
647
|
+
<div class="columns threecols">
|
648
|
+
<div class="column first">
|
649
|
+
<h3>Site wide shortcuts</h3>
|
650
|
+
<dl class="keyboard-mappings">
|
651
|
+
<dt>s</dt>
|
652
|
+
<dd>Focus site search</dd>
|
653
|
+
</dl>
|
654
|
+
<dl class="keyboard-mappings">
|
655
|
+
<dt>?</dt>
|
656
|
+
<dd>Bring up this help dialog</dd>
|
657
|
+
</dl>
|
658
|
+
</div><!-- /.column.first -->
|
659
|
+
<div class="column middle">
|
660
|
+
<h3>Commit list</h3>
|
661
|
+
<dl class="keyboard-mappings">
|
662
|
+
<dt>j</dt>
|
663
|
+
<dd>Move selected down</dd>
|
664
|
+
</dl>
|
665
|
+
<dl class="keyboard-mappings">
|
666
|
+
<dt>k</dt>
|
667
|
+
<dd>Move selected up</dd>
|
668
|
+
</dl>
|
669
|
+
<dl class="keyboard-mappings">
|
670
|
+
<dt>t</dt>
|
671
|
+
<dd>Open tree</dd>
|
672
|
+
</dl>
|
673
|
+
<dl class="keyboard-mappings">
|
674
|
+
<dt>p</dt>
|
675
|
+
<dd>Open parent</dd>
|
676
|
+
</dl>
|
677
|
+
<dl class="keyboard-mappings">
|
678
|
+
<dt>c <em>or</em> o <em>or</em> enter</dt>
|
679
|
+
<dd>Open commit</dd>
|
680
|
+
</dl>
|
681
|
+
</div><!-- /.column.first -->
|
682
|
+
<div class="column last">
|
683
|
+
<h3>Pull request list</h3>
|
684
|
+
<dl class="keyboard-mappings">
|
685
|
+
<dt>j</dt>
|
686
|
+
<dd>Move selected down</dd>
|
687
|
+
</dl>
|
688
|
+
<dl class="keyboard-mappings">
|
689
|
+
<dt>k</dt>
|
690
|
+
<dd>Move selected up</dd>
|
691
|
+
</dl>
|
692
|
+
<dl class="keyboard-mappings">
|
693
|
+
<dt>o <em>or</em> enter</dt>
|
694
|
+
<dd>Open issue</dd>
|
695
|
+
</dl>
|
696
|
+
</div><!-- /.columns.last -->
|
697
|
+
</div><!-- /.columns.equacols -->
|
698
|
+
|
699
|
+
<div class="rule"></div>
|
700
|
+
|
701
|
+
<h3>Issues</h3>
|
702
|
+
|
703
|
+
<div class="columns threecols">
|
704
|
+
<div class="column first">
|
705
|
+
<dl class="keyboard-mappings">
|
706
|
+
<dt>j</dt>
|
707
|
+
<dd>Move selected down</dd>
|
708
|
+
</dl>
|
709
|
+
<dl class="keyboard-mappings">
|
710
|
+
<dt>k</dt>
|
711
|
+
<dd>Move selected up</dd>
|
712
|
+
</dl>
|
713
|
+
<dl class="keyboard-mappings">
|
714
|
+
<dt>x</dt>
|
715
|
+
<dd>Toggle select target</dd>
|
716
|
+
</dl>
|
717
|
+
<dl class="keyboard-mappings">
|
718
|
+
<dt>o <em>or</em> enter</dt>
|
719
|
+
<dd>Open issue</dd>
|
720
|
+
</dl>
|
721
|
+
</div><!-- /.column.first -->
|
722
|
+
<div class="column middle">
|
723
|
+
<dl class="keyboard-mappings">
|
724
|
+
<dt>I</dt>
|
725
|
+
<dd>Mark selected as read</dd>
|
726
|
+
</dl>
|
727
|
+
<dl class="keyboard-mappings">
|
728
|
+
<dt>U</dt>
|
729
|
+
<dd>Mark selected as unread</dd>
|
730
|
+
</dl>
|
731
|
+
<dl class="keyboard-mappings">
|
732
|
+
<dt>e</dt>
|
733
|
+
<dd>Close selected</dd>
|
734
|
+
</dl>
|
735
|
+
<dl class="keyboard-mappings">
|
736
|
+
<dt>y</dt>
|
737
|
+
<dd>Remove selected from view</dd>
|
738
|
+
</dl>
|
739
|
+
</div><!-- /.column.middle -->
|
740
|
+
<div class="column last">
|
741
|
+
<dl class="keyboard-mappings">
|
742
|
+
<dt>c</dt>
|
743
|
+
<dd>Create issue</dd>
|
744
|
+
</dl>
|
745
|
+
<dl class="keyboard-mappings">
|
746
|
+
<dt>l</dt>
|
747
|
+
<dd>Create label</dd>
|
748
|
+
</dl>
|
749
|
+
<dl class="keyboard-mappings">
|
750
|
+
<dt>i</dt>
|
751
|
+
<dd>Back to inbox</dd>
|
752
|
+
</dl>
|
753
|
+
<dl class="keyboard-mappings">
|
754
|
+
<dt>u</dt>
|
755
|
+
<dd>Back to issues</dd>
|
756
|
+
</dl>
|
757
|
+
<dl class="keyboard-mappings">
|
758
|
+
<dt>/</dt>
|
759
|
+
<dd>Focus issues search</dd>
|
760
|
+
</dl>
|
761
|
+
</div>
|
762
|
+
</div>
|
763
|
+
|
764
|
+
<div class="rule"></div>
|
765
|
+
|
766
|
+
<h3>Network Graph</h3>
|
767
|
+
<div class="columns equacols">
|
768
|
+
<div class="column first">
|
769
|
+
<dl class="keyboard-mappings">
|
770
|
+
<dt>← <em>or</em> h</dt>
|
771
|
+
<dd>Scroll left</dd>
|
772
|
+
</dl>
|
773
|
+
<dl class="keyboard-mappings">
|
774
|
+
<dt>→ <em>or</em> l</dt>
|
775
|
+
<dd>Scroll right</dd>
|
776
|
+
</dl>
|
777
|
+
<dl class="keyboard-mappings">
|
778
|
+
<dt>↑ <em>or</em> k</dt>
|
779
|
+
<dd>Scroll up</dd>
|
780
|
+
</dl>
|
781
|
+
<dl class="keyboard-mappings">
|
782
|
+
<dt>↓ <em>or</em> j</dt>
|
783
|
+
<dd>Scroll down</dd>
|
784
|
+
</dl>
|
785
|
+
<dl class="keyboard-mappings">
|
786
|
+
<dt>t</dt>
|
787
|
+
<dd>Toggle visibility of head labels</dd>
|
788
|
+
</dl>
|
789
|
+
</div><!-- /.column.first -->
|
790
|
+
<div class="column last">
|
791
|
+
<dl class="keyboard-mappings">
|
792
|
+
<dt>shift ← <em>or</em> shift h</dt>
|
793
|
+
<dd>Scroll all the way left</dd>
|
794
|
+
</dl>
|
795
|
+
<dl class="keyboard-mappings">
|
796
|
+
<dt>shift → <em>or</em> shift l</dt>
|
797
|
+
<dd>Scroll all the way right</dd>
|
798
|
+
</dl>
|
799
|
+
<dl class="keyboard-mappings">
|
800
|
+
<dt>shift ↑ <em>or</em> shift k</dt>
|
801
|
+
<dd>Scroll all the way up</dd>
|
802
|
+
</dl>
|
803
|
+
<dl class="keyboard-mappings">
|
804
|
+
<dt>shift ↓ <em>or</em> shift j</dt>
|
805
|
+
<dd>Scroll all the way down</dd>
|
806
|
+
</dl>
|
807
|
+
</div><!-- /.column.last -->
|
808
|
+
</div>
|
809
|
+
|
810
|
+
</div>
|
811
|
+
|
812
|
+
|
813
|
+
<!--[if IE 8]>
|
814
|
+
<script type="text/javascript" charset="utf-8">
|
815
|
+
$(document.body).addClass("ie8")
|
816
|
+
</script>
|
817
|
+
<![endif]-->
|
818
|
+
|
819
|
+
<!--[if IE 7]>
|
820
|
+
<script type="text/javascript" charset="utf-8">
|
821
|
+
$(document.body).addClass("ie7")
|
822
|
+
</script>
|
823
|
+
<![endif]-->
|
824
|
+
|
825
|
+
|
826
|
+
<script type='text/javascript'></script>
|
827
|
+
|
828
|
+
</body>
|
829
|
+
</html>
|
830
|
+
|