tubesock 0.1.1 → 0.1.2

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: 7bbfdedb374d8745921858be0f57db08061efa0a
4
- data.tar.gz: 536094ed6152a6dc6fc394188ad3bcf4087b5fb6
3
+ metadata.gz: 8e34c2f3cd416319f09063d1420a92bb4de54f41
4
+ data.tar.gz: 35232dc37e37a9abd7b2595d4eeb8b9e9b252b39
5
5
  SHA512:
6
- metadata.gz: 696025befa9b62e79e2a92a3f76817b2252e0ccb7d266b41c798f1ec553f93492e55a22f6c269eaa4ecc0fe54a03d04e5e81bb574254dea7412123b55eaa065e
7
- data.tar.gz: dcdac25b4eadf8d0c13e7f56b804237356a58b7de0fdcea8c3161fb8133bed66aad2bdb60d57f2d62731c3d6f9dc6763ecdef01decfc43cfb5eaa7f247b647b7
6
+ metadata.gz: 81501d0966fd116753dfe71231626c3cda459672fef63bde5f12a0df305ed91d89fafba1179a29ea825562aa6052bf40c94d0e72c568e46b3bdba2d5daa417f2
7
+ data.tar.gz: 5a06e190adfd2967405e22af868f0967d671b20613c30682fa4bf3d925579e9f49df83d582c4729f640c61cdde314e86d86f309f726d0891e4370f3f36cbab87
@@ -8,6 +8,10 @@ class Tubesock
8
8
  def initialize(socket, version)
9
9
  @socket = socket
10
10
  @version = version
11
+
12
+ @open_handlers = []
13
+ @message_handlers = []
14
+ @close_handlers = []
11
15
  end
12
16
 
13
17
  def self.hijack(env)
@@ -41,15 +45,15 @@ class Tubesock
41
45
  end
42
46
 
43
47
  def onopen(&block)
44
- @openhandler = block
48
+ @open_handlers << block
45
49
  end
46
50
 
47
51
  def onmessage(&block)
48
- @messagehandler = block
52
+ @message_handlers << block
49
53
  end
50
54
 
51
55
  def onclose(&block)
52
- @closehandler = block
56
+ @close_handlers << block
53
57
  end
54
58
 
55
59
  def listen
@@ -57,6 +61,7 @@ class Tubesock
57
61
  Thread.current.abort_on_exception = true
58
62
  framebuffer = WebSocket::Frame::Incoming::Server.new(version: @version)
59
63
  running = true
64
+ @open_handlers.each(&:call)
60
65
  while running
61
66
  data, addrinfo = @socket.recvfrom(2000)
62
67
  running = false if data == ""
@@ -66,18 +71,12 @@ class Tubesock
66
71
  if data == ""
67
72
  running = false
68
73
  else
69
- @messagehandler.call(HashWithIndifferentAccess.new(JSON.load(data))) if @messagehandler
74
+ @message_handlers.each{|h| h.call(HashWithIndifferentAccess.new(JSON.load(data))) }
70
75
  end
71
76
  end
72
77
  end
73
- @closehandler.call if @closehandler
78
+ @close_handlers.each(&:call)
74
79
  @socket.close
75
80
  end
76
- @openhandler.call if @openhandler
77
- end
78
-
79
- def close
80
- @socket.close if @socket.open?
81
- @closehandler.call
82
81
  end
83
82
  end
@@ -6,9 +6,12 @@ class Tubesock
6
6
  included do
7
7
  def hijack
8
8
  if Tubesock.websocket?(env)
9
- rocket = Tubesock.hijack(env)
10
- yield rocket
11
- rocket.listen
9
+ sock = Tubesock.hijack(env)
10
+ yield sock
11
+ sock.onclose do
12
+ ActiveRecord::Base.clear_active_connections!
13
+ end
14
+ sock.listen
12
15
  render text: nil, status: -1
13
16
  else
14
17
  render text: "Not found", status: :not_found
@@ -1,3 +1,3 @@
1
1
  class Tubesock
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tubesock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Gauthier