sinatra-rocketio 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/lib/js/rocketio.js +5 -5
- data/lib/sinatra-rocketio/version.rb +1 -1
- data/lib/sinatra/rocketio/client.rb +26 -18
- data/sample/README.md +8 -0
- data/sample/bin/cui_chat_client.rb +3 -1
- metadata +4 -4
data/History.txt
CHANGED
data/lib/js/rocketio.js
CHANGED
@@ -21,7 +21,7 @@ var RocketIO = function(){
|
|
21
21
|
}();
|
22
22
|
if(typeof self.io === "undefined"){
|
23
23
|
setTimeout(function(){
|
24
|
-
self.emit("error", "WebSocketIO and CometIO are not available")
|
24
|
+
self.emit("error", "WebSocketIO and CometIO are not available");
|
25
25
|
}, 100);
|
26
26
|
return self;
|
27
27
|
};
|
@@ -39,13 +39,13 @@ var RocketIO = function(){
|
|
39
39
|
self.type = "comet";
|
40
40
|
self.connect();
|
41
41
|
}, 3000);
|
42
|
+
self.once("connect", function(){
|
43
|
+
if(ws_close_timer) clearTimeout(ws_close_timer);
|
44
|
+
ws_close_timer = null;
|
45
|
+
});
|
42
46
|
return self;
|
43
47
|
};
|
44
48
|
|
45
|
-
self.on("connect", function(){
|
46
|
-
clearTimeout(ws_close_timer);
|
47
|
-
});
|
48
|
-
|
49
49
|
this.close = function(){
|
50
50
|
self.io.close();
|
51
51
|
};
|
@@ -15,36 +15,44 @@ module Sinatra
|
|
15
15
|
attr_reader :settings, :type, :io
|
16
16
|
|
17
17
|
def initialize(url, opt={:type => :websocket})
|
18
|
+
@type = opt[:type].to_sym
|
19
|
+
@io = nil
|
18
20
|
@settings = JSON.parse HTTParty.get("#{url}/rocketio/settings").body
|
19
|
-
|
21
|
+
@ws_close_thread = nil
|
22
|
+
self
|
23
|
+
end
|
20
24
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
def connect
|
26
|
+
this = self
|
27
|
+
if @type == :websocket and @settings.include? 'websocket'
|
28
|
+
@io = Sinatra::WebSocketIO::Client.new(@settings['websocket']).connect
|
29
|
+
elsif type == :comet or @settings.include? 'comet'
|
30
|
+
@io = Sinatra::CometIO::Client.new(@settings['comet']).connect
|
25
31
|
@type = :comet
|
26
|
-
@io = Sinatra::CometIO::Client.new @settings['comet']
|
27
32
|
else
|
28
33
|
raise Error, "cannot find #{type} IO #{url}"
|
29
34
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
@io.on :* do |event_name, *args|
|
36
|
+
this.emit event_name, *args
|
37
|
+
end
|
38
|
+
if @type == :websocket
|
39
|
+
@ws_close_thread = Thread.new do
|
40
|
+
sleep 3
|
41
|
+
Thread.new do
|
42
|
+
close
|
37
43
|
end
|
44
|
+
emit :error, "websocket port is not open"
|
45
|
+
@type = :comet
|
46
|
+
connect
|
47
|
+
end
|
48
|
+
once :connect do
|
49
|
+
Thread.kill @ws_close_thread if @ws_close_thread
|
50
|
+
@ws_close_thread = nil
|
38
51
|
end
|
39
52
|
end
|
40
53
|
self
|
41
54
|
end
|
42
55
|
|
43
|
-
def connect
|
44
|
-
@io.connect
|
45
|
-
self
|
46
|
-
end
|
47
|
-
|
48
56
|
def close
|
49
57
|
@io.close
|
50
58
|
end
|
data/sample/README.md
CHANGED
@@ -20,3 +20,11 @@ Run
|
|
20
20
|
% rackup config.ru -p 5000
|
21
21
|
|
22
22
|
=> http://localhost:5000
|
23
|
+
|
24
|
+
|
25
|
+
Ruby Client
|
26
|
+
-----------
|
27
|
+
|
28
|
+
% ruby bin/cui_chat_client.rb
|
29
|
+
% ruby bin/cui_chat_client.rb http://localhost:5000 websocket
|
30
|
+
% ruby bin/cui_chat_client.rb http://localhost:5000 comet
|
@@ -5,8 +5,10 @@ $:.unshift File.expand_path '../../lib', File.dirname(__FILE__)
|
|
5
5
|
require 'sinatra/rocketio/client'
|
6
6
|
|
7
7
|
name = `whoami`.strip || 'shokai'
|
8
|
+
url = ARGV.shift || 'http://localhost:5000'
|
9
|
+
type = ARGV.shift || :websocket
|
8
10
|
|
9
|
-
io = Sinatra::RocketIO::Client.new(
|
11
|
+
io = Sinatra::RocketIO::Client.new(url, :type => type).connect
|
10
12
|
#io = Sinatra::RocketIO::Client.new('http://localhost:5000', :type => :comet).connect
|
11
13
|
|
12
14
|
io.on :connect do |session|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-rocketio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -271,7 +271,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
271
271
|
version: '0'
|
272
272
|
segments:
|
273
273
|
- 0
|
274
|
-
hash:
|
274
|
+
hash: -1955004754093144162
|
275
275
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
276
276
|
none: false
|
277
277
|
requirements:
|
@@ -280,7 +280,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
280
|
version: '0'
|
281
281
|
segments:
|
282
282
|
- 0
|
283
|
-
hash:
|
283
|
+
hash: -1955004754093144162
|
284
284
|
requirements: []
|
285
285
|
rubyforge_project:
|
286
286
|
rubygems_version: 1.8.24
|