class WebSocket::Driver::Server
Constants
- EVENTS
Public Class Methods
new(socket, options = {})
click to toggle source
Calls superclass method
WebSocket::Driver.new
# File lib/websocket/driver/server.rb, line 7 def initialize(socket, options = {}) super @http = HTTP::Request.new end
Public Instance Methods
env()
click to toggle source
# File lib/websocket/driver/server.rb, line 12 def env @http.complete? ? @http.env : nil end
parse(buffer)
click to toggle source
# File lib/websocket/driver/server.rb, line 42 def parse(buffer) return @delegate.parse(buffer) if @delegate @http.parse(buffer) return fail_request('Invalid HTTP request') if @http.error? return unless @http.complete? @delegate = Driver.rack(self, @options) @delegate.on(:open) { open } EVENTS.each do |event| @delegate.on(event) { |e| emit(event, e) } end emit(:connect, ConnectEvent.new) end
url()
click to toggle source
# File lib/websocket/driver/server.rb, line 16 def url return nil unless e = env url = "ws://#{e['HTTP_HOST']}" url << e['PATH_INFO'] url << "?#{e['QUERY_STRING']}" unless e['QUERY_STRING'] == '' url end
write(data)
click to toggle source
# File lib/websocket/driver/server.rb, line 58 def write(data) @socket.write(Driver.encode(data, :binary)) end
Private Instance Methods
fail_request()
click to toggle source
# File lib/websocket/driver/server.rb, line 64 def fail_request emit(:error, ProtocolError.new(message)) emit(:close, CloseEvent.new(Hybi::ERRORS[:protocol_error], message)) end
open()
click to toggle source
# File lib/websocket/driver/server.rb, line 69 def open @queue.each do |message| @delegate.__send__(message[0], *message[1]) end @queue = [] end