socket.io-emitter 0.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 24c40abfcadda66cf7c2f9952c3c26d5e63126b0
4
+ data.tar.gz: 71ba37dc4034554cc6f539baf6433a018ff073d0
5
+ SHA512:
6
+ metadata.gz: 1cafda5d0a0f6ee261fba5c3705605e4d2dd4ac3e17c7c49a0d81b78b037ab81dca08f3ae86de337cf54980e33b00a87e773f4c24b1ff4e308f3067a87493690
7
+ data.tar.gz: 097715651f51f215da68c378adfb38b828da192bf38ce6ad2b09a25fde6959648fe9591fb4f46c9f5c82ee5a54fcbaa90189c56b4fb7faf799e48ebe2316eb28
data/.gitignore ADDED
@@ -0,0 +1,23 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
23
+ vendor/bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+
2
+ source 'https://rubygems.org'
3
+
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+
2
+ require "bundler/gem_tasks"
data/Readme.md ADDED
@@ -0,0 +1,34 @@
1
+
2
+ # SocketIO::Emitter
3
+
4
+ TODO: Write a gem description
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem 'socket.io-emitter'
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install socket.io-emitter
19
+
20
+ ## Usage
21
+
22
+ TODO: Write usage instructions here
23
+
24
+ ## Contributing
25
+
26
+ 1. Fork it ( https://github.com/[my-github-username]/socket.io-ruby-emitter/fork )
27
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
28
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
29
+ 4. Push to the branch (`git push origin my-new-feature`)
30
+ 5. Create a new Pull Request
31
+
32
+ ## License
33
+
34
+ MIT
@@ -0,0 +1,74 @@
1
+
2
+ require 'socket.io/emitter/version'
3
+ require 'msgpack'
4
+ require 'redis'
5
+
6
+ module SocketIO
7
+ class Emitter
8
+ module Type
9
+ EVENT = 2
10
+ BINARY_EVENT = 5
11
+ end
12
+
13
+ def initialize(options = {})
14
+ @redis = options[:redis] || Redis.new
15
+ @key = "#{options[:key] || 'socket.io'}#emitter";
16
+ @rooms = []
17
+ @flags = {}
18
+ end
19
+
20
+ def method_missing(name)
21
+ match = /(?<flag>\S+)\?$/.match(name)
22
+ unless match.nil?
23
+ return !!@flags[:flag]
24
+ end
25
+ @flags[name.to_sym] = true
26
+ self
27
+ end
28
+
29
+ def in(room)
30
+ @rooms << room unless @rooms.includes?(room)
31
+ self
32
+ end
33
+
34
+ def to(room)
35
+ self.in(room)
36
+ end
37
+
38
+ def of(nsp)
39
+ @flags[:nsp] = nsp
40
+ self
41
+ end
42
+
43
+ def emit(*args)
44
+ data = []
45
+ packet = {}
46
+ packet[:type] = Type::EVENT
47
+
48
+ args.each do |arg|
49
+ data << arg.to_s
50
+ end
51
+
52
+ if self.binary?
53
+ packet[:type] = Type::BINARY_EVENT
54
+ end
55
+
56
+ packet[:data] = data
57
+
58
+ unless @flags[:nsp].nil?
59
+ packet[:nsp] = @flags[:nsp]
60
+ @flags.delete(:nsp)
61
+ else
62
+ packet[:nsp] = '/'
63
+ end
64
+
65
+ packed = MessagePack.pack([packet, [rooms: @rooms, flags: @flags]])
66
+ @redis.publish(@key, packed)
67
+
68
+ @rooms = []
69
+ @flags = {}
70
+
71
+ self
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,8 @@
1
+
2
+ require 'socket.io/emitter'
3
+
4
+ module SocketIO
5
+ class Emitter
6
+ VERSION = '0.0.0'
7
+ end
8
+ end
@@ -0,0 +1,27 @@
1
+
2
+ # coding: utf-8
3
+
4
+ lib = File.expand_path('../lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require 'socket.io/emitter/version'
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "socket.io-emitter"
10
+ spec.version = SocketIO::Emitter::VERSION
11
+ spec.authors = ["nulltask"]
12
+ spec.email = ["nulltask@gmail.com"]
13
+ spec.summary = %q{Ruby Socket.IO emitter implementation.}
14
+ spec.homepage = "https://github.com/nulltask/socket.io-ruby-emitter"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "redis"
23
+ spec.add_dependency "msgpack"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.6"
26
+ spec.add_development_dependency "rake"
27
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: socket.io-emitter
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - nulltask
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: redis
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: msgpack
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
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description:
70
+ email:
71
+ - nulltask@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - Gemfile
78
+ - Rakefile
79
+ - Readme.md
80
+ - lib/socket.io/emitter.rb
81
+ - lib/socket.io/emitter/version.rb
82
+ - socket.io-emitter.gemspec
83
+ homepage: https://github.com/nulltask/socket.io-ruby-emitter
84
+ licenses:
85
+ - MIT
86
+ metadata: {}
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 2.2.2
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: Ruby Socket.IO emitter implementation.
107
+ test_files: []