simple_pusher 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDIxNTNkOTYxMGQxMGM3MzdlZDE5OTcwYzVkNmVlMGM3ODJhYjFmYg==
4
+ NGIwMzM4YmJlZjZhY2JlZGI2MWI5NzY5ZGE0NWVkNWVlNThjNmI3OQ==
5
5
  data.tar.gz: !binary |-
6
- YWNkYTc0ZjgzN2UwYWU2OGFlMGMxZGY5ZTFjOGIxOGY2NmU1YjA5OA==
6
+ OWY0NGU5YmFlYjQ1N2M1OGYwMmVlODMzNjFlYWJiN2IwNjU3ZWM1OQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MWFhOTBlMjgxMDc2OTM4ZjFiNWNiZmU3ZTg3OTE1ZTIzNDg2MDUzNzg4YTUx
10
- NDMxODhkNTRhNmRlMGM3MGI2ZmY1MjliOTM2MTY1NzgxNjk0YzJlMDkyNWMz
11
- ZTY1YThmYjY3MDRmOWYxYTVmZmUyNzRiNThkMTI0MDBmODRiYTY=
9
+ ZDk4ZWRlNWMzMDI0M2ViYjc0YmJmMmZmYWVlZTA3NTdhZDIxYzg2ZmRlMmY0
10
+ Y2YyODVhMzE3Yzk2NDgwMWFiMDhkYzYyZDlhZjgzYzk1Yzg3YTU1M2U2N2Q5
11
+ MzQ0YmYwNGRmNWNlZmY3NmRlYTRlYmI4YTY0M2Y2YWZhNGI4ZDI=
12
12
  data.tar.gz: !binary |-
13
- ZDNiOTc0OTk5N2ZiMzk3MzhjOTQwNTRhZjhlZWU5OGRjMTI0OWFiZDVmMzRi
14
- ZGNjNTcyNmM1ZTY2OTIyZTk4MWQyMjdhYjk3YjdkYzBhNjE4Y2YyYmM3YTI0
15
- YzhmNDEwNzJhYWZiYjk3MjQzNTYzMTM1YjU0ZDQ5OWQ2OGQ3YjQ=
13
+ MzNlZjJiMDMxNDA4ZGRlZTg4MTRmMDg5N2ZlM2I4MTZhYjExMDk4MWIzNzA0
14
+ MGMxMzkzMzRjZWUyZGMxYTdjMmVjZDc1NWFkZWI4ZDhlZjJiYjI5ZjMyNjk0
15
+ YTNlNmY2NjQzMzgwY2RkNzA5YTc5Njg5Yzg3NjkwODJhMmI1YTI=
data/README.md CHANGED
@@ -54,6 +54,11 @@ Broadcast message via server side.
54
54
  SimplePusher.publish('channel_name', "Time now #{Time.now.to_s(:db}")
55
55
  ```
56
56
 
57
+ Broadcast message via http POST.
58
+ ```
59
+ curl -d 'channel=channel1&message=hello' http://localhost:3000/simple_pusher
60
+ ```
61
+
57
62
  Message callback at server side.
58
63
 
59
64
  ```
@@ -66,12 +71,36 @@ SimplePusher.on("ping") do
66
71
  end
67
72
  ```
68
73
 
74
+ ## Use SimplePusher in Sinatra app
75
+
76
+ ```
77
+ # app.rb
78
+ require 'simple_pusher/sinatra_app'
79
+
80
+ EventMachine.next_tick do
81
+ SimplePusher.setup do |config|
82
+ config.port = 8088
83
+ end
84
+ SimplePusher.start
85
+ end
86
+
87
+ class MyApp < Sinatra::Base
88
+
89
+ use SimplePusher::SinatraApp # With this you just setup http post interface: curl -d 'channel=channel1&message=hello' http://localhost:3000/simple_pusher
90
+ end
91
+
92
+ ```
93
+
94
+ Currently I have not implement directly require simple_pusher js from project. You can download `simple_pusher.coffee` file from [Github repository](https://raw.githubusercontent.com/qichunren/simple_pusher/master/vendor/assets/javascripts/simple_pusher.coffee) to your project for use.
95
+
69
96
  ## Emulating WebSockets in older browsers
70
97
  It is possible to emulate WebSockets in older browsers using flash emulation. For example take a look at the [web-socket-js](https://github.com/gimite/web-socket-js) project.
71
98
 
72
99
  ## TODO
73
100
 
74
- * Add `on` method message callback to client js.
101
+ * <del>Add `on` method message callback to client js.</del>
102
+ * Support JSON format message.
103
+ * Use SimplePusher js in Sinatra app.
75
104
 
76
105
  ## Contributing
77
106
 
@@ -3,6 +3,12 @@ require 'em-websocket'
3
3
  require 'simple_pusher/engine' if defined?(Rails)
4
4
 
5
5
  module SimplePusher
6
+ autoload :Configuration, 'simple_pusher/configuration'
7
+ autoload :Connection, 'simple_pusher/connection'
8
+ autoload :Server, 'simple_pusher/server'
9
+ autoload :Middleware, 'simple_pusher/middleware'
10
+
11
+
6
12
  class << self
7
13
  def setup
8
14
  yield configuration
@@ -34,7 +40,3 @@ module SimplePusher
34
40
  module_function :publish
35
41
  module_function :on
36
42
  end
37
-
38
- SimplePusher.autoload :Configuration, 'simple_pusher/configuration'
39
- SimplePusher.autoload :Connection, 'simple_pusher/connection'
40
- SimplePusher.autoload :Server, 'simple_pusher/server'
@@ -1,4 +1,7 @@
1
1
  module SimplePusher
2
2
  class Engine < ::Rails::Engine
3
+ initializer "simple_pusher.configure_rails_initialization" do |app|
4
+ app.middleware.use SimplePusher::Middleware
5
+ end
3
6
  end
4
7
  end
@@ -0,0 +1,22 @@
1
+ module SimplePusher
2
+ class Middleware
3
+ def initialize(app)
4
+ @app = app
5
+ end
6
+
7
+ def call(env)
8
+ if env['PATH_INFO'] == '/simple_pusher' && env['REQUEST_METHOD'] == 'POST'
9
+ # Both support param from url query string and form post data
10
+ simple_pusher_params = env['rack.request.form_hash'].present? ? env['rack.request.form_hash'] : Rack::Utils.parse_nested_query(env['QUERY_STRING'])
11
+ if simple_pusher_params['channel'].blank?
12
+ [200, {}, 'Required channel param']
13
+ else
14
+ SimplePusher.publish(simple_pusher_params['channel'], simple_pusher_params['message'])
15
+ [200, {}, 'OK']
16
+ end
17
+ else
18
+ @app.call(env)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,6 +1,5 @@
1
1
  require 'singleton'
2
2
  require 'em-websocket'
3
- require 'connection'
4
3
 
5
4
  module SimplePusher
6
5
  class Server
@@ -0,0 +1,16 @@
1
+ require 'sinatra/base'
2
+
3
+ module SimplePusher
4
+ class SinatraApp < Sinatra::Base
5
+
6
+ post('/simple_pusher') do
7
+ params[:channel].to_s.strip!
8
+ if params[:channel].to_s.length == 0
9
+ 'Required channel param'
10
+ else
11
+ SimplePusher.publish(params[:channel], params[:message])
12
+ 'ok'
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module SimplePusher
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -6,7 +6,7 @@ class SimplePusher
6
6
  data = e.data.split(":")
7
7
  event = data[0]
8
8
  message = data[1..-1].join(":")
9
- callback_fn.call(this, message) for callback_fn in @_callbacks[event]
9
+ callback_fn.call(this, message) for callback_fn in @_callbacks[event] if @_callbacks[event]
10
10
 
11
11
  on: (event_name, callback_fn) ->
12
12
  @_callbacks[event_name] = (@_callbacks[event_name] ||= [])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_pusher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - qichunren
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-27 00:00:00.000000000 Z
11
+ date: 2014-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-websocket
@@ -68,7 +68,9 @@ files:
68
68
  - lib/simple_pusher/configuration.rb
69
69
  - lib/simple_pusher/connection.rb
70
70
  - lib/simple_pusher/engine.rb
71
+ - lib/simple_pusher/middleware.rb
71
72
  - lib/simple_pusher/server.rb
73
+ - lib/simple_pusher/sinatra_app.rb
72
74
  - lib/simple_pusher/version.rb
73
75
  - simple_pusher.gemspec
74
76
  - test/configuration_test.rb