class Faye::WebSocket
Constants
- ADAPTERS
Attributes
env[R]
Public Class Methods
determine_url(env, schemes = ['wss', 'ws'])
click to toggle source
# File lib/faye/websocket.rb, line 30 def self.determine_url(env, schemes = ['wss', 'ws']) scheme = schemes[secure_request?(env) ? 0 : 1] host = env['HTTP_HOST'] path = env['PATH_INFO'] query = env['QUERY_STRING'].to_s scheme + '://' + host + path + (query.empty? ? '' : '?' + query) end
ensure_reactor_running()
click to toggle source
# File lib/faye/websocket.rb, line 39 def self.ensure_reactor_running Thread.new { EventMachine.run } unless EventMachine.reactor_running? Thread.pass until EventMachine.reactor_running? end
load_adapter(backend)
click to toggle source
# File lib/faye/websocket.rb, line 44 def self.load_adapter(backend) const = Kernel.const_get(ADAPTERS[backend]) rescue nil require(backend) unless const path = File.expand_path("../adapters/#{backend}.rb", __FILE__) require(path) if File.file?(path) end
new(env, protocols = nil, options = {})
click to toggle source
Calls superclass method
Faye::WebSocket::API.new
# File lib/faye/websocket.rb, line 68 def initialize(env, protocols = nil, options = {}) WebSocket.ensure_reactor_running @env = env @url = WebSocket.determine_url(@env) super(options) { ::WebSocket::Driver.rack(self, :max_length => options[:max_length], :protocols => protocols) } @driver_started = false @stream = Stream.new(self) if callback = @env['async.callback'] callback.call([101, {}, @stream]) end end
secure_request?(env)
click to toggle source
# File lib/faye/websocket.rb, line 51 def self.secure_request?(env) return true if env['HTTPS'] == 'on' return true if env['HTTP_X_FORWARDED_SSL'] == 'on' return true if env['HTTP_X_FORWARDED_SCHEME'] == 'https' return true if env['HTTP_X_FORWARDED_PROTO'] == 'https' return true if env['rack.url_scheme'] == 'https' return false end
websocket?(env)
click to toggle source
# File lib/faye/websocket.rb, line 61 def self.websocket?(env) ::WebSocket::Driver.websocket?(env) end
Public Instance Methods
rack_response()
click to toggle source
# File lib/faye/websocket.rb, line 90 def rack_response start_driver [ -1, {}, [] ] end
start_driver()
click to toggle source
# File lib/faye/websocket.rb, line 84 def start_driver return if @driver.nil? || @driver_started @driver_started = true EventMachine.schedule { @driver.start } end