Class: Async::WebSocket::Server

Inherits:
Protocol::HTTP::Middleware
  • Object
show all
Includes:
Protocol::WebSocket::Headers
Defined in:
lib/async/websocket/server.rb

Instance Method Summary collapse

Constructor Details

#initialize(delegate, protocols: [], handler: Connection) ⇒ Server

Returns a new instance of Server.



31
32
33
34
35
36
# File 'lib/async/websocket/server.rb', line 31

def initialize(delegate, protocols: [], handler: Connection)
  super(delegate)
  
  @protocols = protocols
  @handler = handler
end

Instance Method Details

#call(request) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/async/websocket/server.rb', line 47

def call(request)
  if request.protocol == PROTOCOL
    # Select websocket sub-protocol:
    protocol = select_protocol(request)
    
    # request.headers = nil
    
    Response.for(request, headers, protocol: protocol, **options) do |stream|
      framer = Protocol::WebSocket::Framer.new(stream)
      
      yield handler.call(framer, protocol)
    end
  else
    super
  end
end

#response(request) ⇒ Object



44
45
# File 'lib/async/websocket/server.rb', line 44

def response(request)
end

#select_protocol(request) ⇒ Object



38
39
40
41
42
# File 'lib/async/websocket/server.rb', line 38

def select_protocol(request)
  if requested_protocol = request.headers[SEC_WEBSOCKET_PROTOCOL]
    return (requested_protocol & @protocols).first
  end
end