realtime 0.0.6 → 0.0.9

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d22033b6986b82f9dff7cae452269f31659ab00
4
- data.tar.gz: e70f2fff807ed9cfdcf9d2b435ec8694892a6f7f
3
+ metadata.gz: d51386293451f00ca5c30c478f81b44b5319f596
4
+ data.tar.gz: 2fe074b98ff94585282dd45013ba26abb5f1280c
5
5
  SHA512:
6
- metadata.gz: 7c01f031bfc837a132f0ebd556e239506b499997d09afde88c2722b8b9bf154604a3d8312070b3048d6e17bcf654adb83fdcabb2636d7c4c89acfba1e1ce7355
7
- data.tar.gz: f33bf722d9ac2b7f4fe6a07a166e0f5ee53132e4e02a28340672c9fd5da0de957e5ad88ff336a4c162986be16f220431d4b0e74ca4bdf905914cb69ed4593af4
6
+ metadata.gz: d82fa7edbc079e5db5bf883e06b38fe189be50302e95c19548a068f6b4001c5d7170e4a4268969a409cb65def6f3ccb36ee58a8f359e33efb543f3200b43f8a3
7
+ data.tar.gz: 73e0f8b6669caaba4067d9a3bdb6312c857f853a272b7792075b1c830198786fd87584a5698dad6b2cf19109abef6f8891bf02b3da4a0ea27aa31b3e9f9f0608
@@ -1,5 +1,6 @@
1
1
 
2
2
  require "realtime/realtime_controller.rb"
3
3
  require "realtime/redis_wrapper.rb"
4
+ require "realtime/zmq_wrapper.rb"
4
5
  require 'realtime/view_helpers.rb'
5
6
  require 'realtime/railtie.rb'
@@ -3,11 +3,17 @@ module Realtime
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  module ClassMethods
6
- def realtime_controller
6
+ def realtime_controller(options = nil)
7
7
  before_filter :do_realtime_token
8
8
  before_filter :do_realtime_user_id
9
9
  before_filter :do_realtime_server_url
10
- after_filter :store_realtime_session
10
+ if options.nil?
11
+ after_filter :store_realtime_session_redis
12
+ elsif options[:queue] == :redis
13
+ after_filter :store_realtime_session_redis
14
+ elsif options[:queue] == :zmq
15
+ after_filter :store_realtime_session_zmq
16
+ end
11
17
  end
12
18
  end
13
19
 
@@ -26,8 +32,26 @@ module Realtime
26
32
  return @realtime_server_url
27
33
  end
28
34
 
35
+ # create shared session tokens for redis/socketio realtime server running on node.js
36
+ def store_realtime_session_zmq
37
+ # store session data or any authentication data you want here, generate to JSON data
38
+ session_data = {
39
+ "user_id" => realtime_user_id,
40
+ }
41
+
42
+ # todo: merge additional session data passed in
43
+ stored_session_data = JSON.generate(session_data)
44
+
45
+ ZmqWrapper.store_session(
46
+ realtime_user_id,
47
+ @realtime_token,
48
+ stored_session_data,
49
+ 86400
50
+ )
51
+ end
52
+
29
53
  # create shared session tokens for redis/socketio realtime server running on node.js
30
- def store_realtime_session
54
+ def store_realtime_session_redis
31
55
  # store session data or any authentication data you want here, generate to JSON data
32
56
  session_data = {
33
57
  "user_id" => realtime_user_id,
@@ -45,8 +69,6 @@ module Realtime
45
69
 
46
70
  # expire this realtime session after one day.
47
71
  RedisWrapper.redis.expire("rtSession-" + realtime_user_id.to_s, 86400)
48
-
49
-
50
72
  end
51
73
 
52
74
  end
@@ -1,3 +1,3 @@
1
1
  module Realtime
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -0,0 +1,32 @@
1
+ class ZmqWrapper
2
+
3
+ require 'em-zeromq'
4
+
5
+ def self.publish(the_message)
6
+ EM.run {
7
+ zmq = EM::ZeroMQ::Context.new(1)
8
+ pusher = zmq.socket(ZMQ::PUSH)
9
+ pusher.connect($zmq_server)
10
+ message = "realtime_msg:" + the_message.to_json
11
+ puts "Pushing realtime message: " + message
12
+ pusher.send_msg(message)
13
+ EM.stop
14
+ }
15
+ end
16
+
17
+ def self.store_session(user_id, session_id, session_data, expiration)
18
+ EM.run {
19
+ zmq = EM::ZeroMQ::Context.new(1)
20
+ pusher = zmq.socket(ZMQ::PUSH)
21
+ pusher.connect($zmq_server)
22
+ the_message = {user_id: user_id,
23
+ session_id: session_id,
24
+ session_data: session_data,
25
+ expiration: expiration}
26
+ message = "rtSession:" + the_message.to_json
27
+ puts "Pushing session message: " + message
28
+ pusher.send_msg(message)
29
+ EM.stop
30
+ }
31
+ end
32
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: realtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Atlas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-27 00:00:00.000000000 Z
11
+ date: 2014-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.1.1
27
- - !ruby/object:Gem::Dependency
28
- name: redis
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  description: Provides a simple Realtime framework for Rails applications.
42
28
  email:
43
29
  - mike.atlas@gmail.com
@@ -53,6 +39,7 @@ files:
53
39
  - lib/realtime/redis_wrapper.rb
54
40
  - lib/realtime/version.rb
55
41
  - lib/realtime/view_helpers.rb
42
+ - lib/realtime/zmq_wrapper.rb
56
43
  - lib/realtime.rb
57
44
  - MIT-LICENSE
58
45
  homepage: http://mikeatlas.github.io/realtime-rails/