tubesock 0.1.1 → 0.1.2

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: 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