Module: ObjectsFramework::PubSub

Defined in:
lib/objectsframework/pubsub.rb

Defined Under Namespace

Modules: ClassExtend Classes: Channel

Constant Summary collapse

@@channels =
{}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(child) ⇒ Object



8
9
10
11
# File 'lib/objectsframework/pubsub.rb', line 8

def self.included(child)
  child.add_hook :filter => "request.capture", :method => "pubsub_capture_request"
  child.extend ClassExtend
end

Instance Method Details

#pubsub_capture_requestObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/objectsframework/pubsub.rb', line 13

def pubsub_capture_request
  # TODO: hijack rack request

  if(@env["HTTP_UPGRADE"] == "websocket")
    # Request is websockets hijacking
    tubesock = Tubesock.hijack(@env)

    @@channels[request.path.split("/")[2]].sockets << tubesock

    tubesock.onclose do
        @@channels[request.path.split("/")[2]].sockets.delete(tubesock)
    end

    tubesock.listen

    [-1, {}, []]
  else
    return continue
  end
end