sock-drawer 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2e3e0c5fd32ba6df30d8b2d50fec26a94bbcf51
4
- data.tar.gz: 0fd0deb7386a08d81f8a70a427282bab09b2b490
3
+ metadata.gz: db994d09442d34c3bbe8e8ceda3a29270e14d033
4
+ data.tar.gz: dcb43f57ec55b2fac092d28e8bf6ba61c27c88a8
5
5
  SHA512:
6
- metadata.gz: df26b6ff39efb6fb87292133e728c250728cd54a0f1cc819a0f41b555fea95eca245c32f650e839774182108c72c84c1cf100252b98e34332e20114ef8b36f14
7
- data.tar.gz: 753591b431fc63947bdf19836258fe6397431287052a93709938fcc74e99e896525acab419172b30f669615756697d6091ef691d5957bded4b9069706e07b1a5
6
+ metadata.gz: a503d9185396f95d453fee0762d409c9c42ca4cba42b86f5c3c4e93603fa4b54011e28f2a895813e18cca093be6ed7aea9d298c958f847fcfdb78d2729c2e5ec
7
+ data.tar.gz: d6827bf2e513bc32fb0e88a1c9f000a2fe2771400a829440ce1d10edf18d142ff171732eed5f5c37515c1970eef3a12ab9b8aa6aaa42fda1fff9d7743e6343a5
data/README.md CHANGED
@@ -74,7 +74,7 @@ end
74
74
  Then register your listener with the server
75
75
 
76
76
  ```Ruby
77
- Sock::Server.new(listener: MockClass)
77
+ Sock::Server.new(listener: MyListener)
78
78
  ```
79
79
 
80
80
  Whenever an event is fired on the `sock-hook/echo` channel the block will be executed.
@@ -98,7 +98,7 @@ Current supported configuration options:
98
98
 
99
99
  | keyword arg | default |
100
100
  | ----------- | ------- |
101
- | name | 'sock-hook'
101
+ | name | 'sock-hook' |
102
102
  | logger | Logger.new(STDOUT) |
103
103
  | socket_params | { host: '0.0.0.0', port: 8020 } |
104
104
  | mode | 'default' |
data/Rakefile CHANGED
@@ -7,3 +7,11 @@ namespace :sock do
7
7
  Sock::Server.new.start!
8
8
  end
9
9
  end
10
+
11
+ task :spec do
12
+ begin
13
+ require 'rspec/core/rake_task'
14
+ RSpec::Core::RakeTask.new(:spec)
15
+ rescue LoadError
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ <!doctype html>
2
+
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <title>Simple socket example</title>
7
+ <meta name="description" content="Simple socket example">
8
+ <meta name="author" content="HParker">
9
+ </head>
10
+
11
+ <body>
12
+ <h1>chat</h1>
13
+ <ul id="chat">
14
+ <li>chat begins under here</li>
15
+ </ul>
16
+
17
+ <script type="text/javascript">
18
+ var webSocket = new WebSocket("ws://localhost:8020/my-channel");
19
+
20
+ webSocket.onmessage = function(event) {
21
+ var li = document.createElement("li");
22
+ li.innerText = event.data;
23
+ var chat = document.getElementById("chat");
24
+ chat.appendChild(li);
25
+ }
26
+ </script>
27
+ </body>
28
+ </html>
@@ -0,0 +1,7 @@
1
+ How to use
2
+ =============
3
+
4
+ 1. start the sock server `rake sock:server`
5
+ 2. open `index.html` in your browser.
6
+ 3. then send a message `ruby send_message.rb "my message"`
7
+ 4. Grab a :beer:
@@ -0,0 +1,3 @@
1
+ require_relative '../../lib/sock/drawer'
2
+
3
+ Sock::Client.new.pub(ARGV.first, channel: 'my-channel')
@@ -2,6 +2,6 @@ module Sock
2
2
  # supply the version number
3
3
  class Drawer
4
4
  # The current version of sock-drawer
5
- VERSION = '0.1.0'
5
+ VERSION = '0.1.1'
6
6
  end
7
7
  end
data/lib/sock/server.rb CHANGED
@@ -20,7 +20,7 @@ module Sock
20
20
  # utility method used to subscribe on the default name and start the socket server
21
21
  def start!
22
22
  EM.run do
23
- register!
23
+ register! if @listener
24
24
  subscribe(@name)
25
25
  socket_start_listening
26
26
  end
@@ -51,7 +51,6 @@ module Sock
51
51
  EventMachine::WebSocket.start(@socket_params) do |ws|
52
52
  handle_open(ws)
53
53
  handle_message(ws)
54
- handle_close(ws)
55
54
  end
56
55
  end
57
56
 
@@ -69,7 +68,8 @@ module Sock
69
68
  def handle_open(ws)
70
69
  ws.onopen do |handshake|
71
70
  @logger.info "sock opened on #{handshake.path}"
72
- channel(@name + handshake.path).subscribe { |msg| ws.send(msg) }
71
+ sid = channel(@name + handshake.path).subscribe { |msg| ws.send(msg) }
72
+ handle_close(ws, sid, handshake)
73
73
  end
74
74
  end
75
75
 
@@ -77,11 +77,10 @@ module Sock
77
77
  ws.onmessage { |msg| channel('incoming-hook').push(msg) }
78
78
  end
79
79
 
80
- def handle_close(ws)
81
- # TODO: how can I know the sid to remove this subscription?
80
+ def handle_close(ws, sid, handshake)
82
81
  ws.onclose {
83
- @logger.info "connection closed"
84
- # channel(@name + handshake.path).unsubscribe(sid)
82
+ @logger.info "connection #{sid} closed"
83
+ channel(@name + handshake.path).unsubscribe(sid)
85
84
  }
86
85
  end
87
86
 
data/sock-drawer.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
  spec.summary = 'Super simple websocket manager. '
12
12
  spec.description = 'Provide a really simple interface '\
13
13
  'to manage events in ruby and via websockets using ruby and event machine.'
14
- spec.homepage = 'http://www.thisisadam.me'
14
+ spec.homepage = 'https://github.com/HParker/sock-drawer'
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sock-drawer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hess
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-30 00:00:00.000000000 Z
11
+ date: 2015-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -165,6 +165,9 @@ files:
165
165
  - LICENSE.txt
166
166
  - README.md
167
167
  - Rakefile
168
+ - examples/simple/index.html
169
+ - examples/simple/readme.md
170
+ - examples/simple/send_message.rb
168
171
  - lib/sock/client.rb
169
172
  - lib/sock/drawer.rb
170
173
  - lib/sock/drawer/version.rb
@@ -176,7 +179,7 @@ files:
176
179
  - spec/server_spec.rb
177
180
  - spec/spec_helper.rb
178
181
  - spec/subscriber_spec.rb
179
- homepage: http://www.thisisadam.me
182
+ homepage: https://github.com/HParker/sock-drawer
180
183
  licenses:
181
184
  - MIT
182
185
  metadata: {}