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 +4 -4
 - data/lib/tubesock.rb +10 -11
 - data/lib/tubesock/hijack.rb +6 -3
 - data/lib/tubesock/version.rb +1 -1
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8e34c2f3cd416319f09063d1420a92bb4de54f41
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 35232dc37e37a9abd7b2595d4eeb8b9e9b252b39
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 81501d0966fd116753dfe71231626c3cda459672fef63bde5f12a0df305ed91d89fafba1179a29ea825562aa6052bf40c94d0e72c568e46b3bdba2d5daa417f2
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5a06e190adfd2967405e22af868f0967d671b20613c30682fa4bf3d925579e9f49df83d582c4729f640c61cdde314e86d86f309f726d0891e4370f3f36cbab87
         
     | 
    
        data/lib/tubesock.rb
    CHANGED
    
    | 
         @@ -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 
     | 
    
         
            -
                @ 
     | 
| 
      
 48 
     | 
    
         
            +
                @open_handlers << block
         
     | 
| 
       45 
49 
     | 
    
         
             
              end
         
     | 
| 
       46 
50 
     | 
    
         | 
| 
       47 
51 
     | 
    
         
             
              def onmessage(&block)
         
     | 
| 
       48 
     | 
    
         
            -
                @ 
     | 
| 
      
 52 
     | 
    
         
            +
                @message_handlers << block
         
     | 
| 
       49 
53 
     | 
    
         
             
              end
         
     | 
| 
       50 
54 
     | 
    
         | 
| 
       51 
55 
     | 
    
         
             
              def onclose(&block)
         
     | 
| 
       52 
     | 
    
         
            -
                @ 
     | 
| 
      
 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 
     | 
    
         
            -
                        @ 
     | 
| 
      
 74 
     | 
    
         
            +
                        @message_handlers.each{|h| h.call(HashWithIndifferentAccess.new(JSON.load(data))) }
         
     | 
| 
       70 
75 
     | 
    
         
             
                      end
         
     | 
| 
       71 
76 
     | 
    
         
             
                    end
         
     | 
| 
       72 
77 
     | 
    
         
             
                  end
         
     | 
| 
       73 
     | 
    
         
            -
                  @ 
     | 
| 
      
 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
         
     | 
    
        data/lib/tubesock/hijack.rb
    CHANGED
    
    | 
         @@ -6,9 +6,12 @@ class Tubesock 
     | 
|
| 
       6 
6 
     | 
    
         
             
                included do
         
     | 
| 
       7 
7 
     | 
    
         
             
                  def hijack
         
     | 
| 
       8 
8 
     | 
    
         
             
                    if Tubesock.websocket?(env)
         
     | 
| 
       9 
     | 
    
         
            -
                       
     | 
| 
       10 
     | 
    
         
            -
                      yield  
     | 
| 
       11 
     | 
    
         
            -
                       
     | 
| 
      
 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
         
     | 
    
        data/lib/tubesock/version.rb
    CHANGED