sinatra-cometio 0.0.2 → 0.0.3

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/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.0.3 2012-11-16
2
+
3
+ * emit/on "error" event on client side.
4
+ * udpate README and gem require.
5
+
1
6
  === 0.0.2 2012-11-15
2
7
 
3
8
  * support session
data/README.rdoc CHANGED
@@ -12,38 +12,85 @@ Node.js like Comet I/O plugin for Sinatra
12
12
 
13
13
  == SYNOPSIS:
14
14
 
15
- server
15
+ === Client --(Ajax)--> Server
16
+
17
+ Client Side
18
+
19
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
20
+ <script src="<%= cometio_js %>"></script>
21
+
22
+ var io = new CometIO().connect();
23
+ io.push("chat", {name: "shokai", message: "hello"}); // client -> server
24
+
25
+ Server Side
16
26
 
17
27
  require 'sinatra'
18
28
  require 'sinatra/cometio'
19
29
 
20
- ## echo
21
30
  CometIO.on :chat do |data, session|
22
31
  puts "#{data['name']} : #{data['message']} <#{session}>"
23
- self.push :chat, data
24
32
  end
33
+ ## => "shokai : hello <12abcde345f6g7h8ijk>"
25
34
 
26
35
 
27
- client HTML
36
+ === Server --(Comet)--> Client
28
37
 
29
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
30
- <script src="<%= cometio_js %>"></script>
38
+ Server Side
31
39
 
40
+ CometIO.push :temperature, 35 # broadcast
41
+ CometIO.push :light, {:value => 150}, {:to => session_id} # to specific client
32
42
 
33
- client JavaScript
43
+ Client Side
34
44
 
35
- var io = new CometIO().connect();
45
+ io.on("temperature", function(value){
46
+ console.log("server temperature : " + value);
47
+ });
48
+
49
+
50
+ === On "connect" Event
51
+
52
+ Client Side
53
+
54
+ io.on("connect",function(session){
55
+ alert("connect!!");
56
+ });
57
+
58
+ Server Side
59
+
60
+ CometIO.on :connect do |session|
61
+ puts "new client <#{session}>"
62
+ end
36
63
 
37
- // client <-- server
38
- io.on("chat", function(data){
39
- consle.log(data.name+" : "+data.message);
64
+ === On "error" Event
65
+
66
+ Client Side
67
+
68
+ io.on("error", function(err){
69
+ console.error(err);
40
70
  });
41
71
 
42
- // client --> server
43
- io.push("chat", {name: "shokai", message: "hello"});
44
72
 
73
+ === Remove Event Listener
74
+
75
+ Server Side
76
+
77
+ id = CometIO.on :chat do |data, from|
78
+ puts "#{data} - from#{from}"
79
+ end
80
+ CometIO.removeListener id
81
+
82
+ or
83
+
84
+ CometIO.removeListener :chat # remove all chat listener
85
+
86
+
87
+ == Sample App
88
+
89
+ chat app
90
+
91
+ - http://cometio-chat.herokuapp.com
92
+ - https://github.com/shokai/sinatra-cometio/tree/master/sample
45
93
 
46
- see sample app => http://cometio-chat.herokuapp.com
47
94
 
48
95
  == REQUIREMENTS:
49
96
 
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ $hoe = Hoe.spec 'sinatra-cometio' do
15
15
  self.rubyforge_name = self.name # TODO this is default value
16
16
  self.extra_deps = [['sinatra','>= 1.3.3'],
17
17
  ['eventmachine', '>= 1.0.0'],
18
- ['json'],
18
+ ['json', '>= 1.7.0'],
19
19
  ['sinatra-contrib', '>= 1.3.2'],
20
20
  ['event_emitter', '>= 0.1.0']]
21
21
 
data/lib/js/cometio.js CHANGED
@@ -11,6 +11,7 @@ var CometIO = function(){
11
11
  success : function(data){
12
12
  },
13
13
  error : function(req, stat, e){
14
+ self.emit("error", "CometIO push error");
14
15
  },
15
16
  complete : function(e){
16
17
  },
@@ -42,6 +43,7 @@ var CometIO = function(){
42
43
  self.get();
43
44
  },
44
45
  error : function(req, stat, e){
46
+ self.emit("error", "CometIO get error");
45
47
  setTimeout(self.get, 10000);
46
48
  },
47
49
  complete : function(e){
@@ -1,3 +1,3 @@
1
1
  module SinatraCometio
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -6,13 +6,17 @@ io.on("chat", function(data){
6
6
  });
7
7
 
8
8
  io.on("connect", function(session){
9
- alert("connect!! "+session);
9
+ console.log("connect!! "+session);
10
10
  $("#chat #btn_send").click(post);
11
11
  $("#chat #message").keydown(function(e){
12
12
  if(e.keyCode == 13) post();
13
13
  });
14
14
  });
15
15
 
16
+ io.on("error", function(err){
17
+ console.error(err);
18
+ });
19
+
16
20
  var post = function(){
17
21
  var name = $("#chat #name").val();
18
22
  var message = $("#chat #message").val();
@@ -17,7 +17,7 @@
17
17
  %div#chat
18
18
  %input{:id => 'name', :value => 'name', :size => 20}
19
19
  %input{:id => 'message', :value => 'hello!!', :size => 80}
20
- %input{:id => 'btn_send', :type => 'button', :value => 'start'}
20
+ %input{:id => 'btn_send', :type => 'button', :value => 'post'}
21
21
  %ul#timeline
22
22
 
23
23
  %hr
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-cometio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
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: 2012-11-15 00:00:00.000000000 Z
12
+ date: 2012-11-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 1.7.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 1.7.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: sinatra-contrib
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +194,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
194
  version: '0'
195
195
  segments:
196
196
  - 0
197
- hash: -3646192139090074998
197
+ hash: 3190168265440038000
198
198
  required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  none: false
200
200
  requirements: