lib/reel/websocket.rb in reel-0.6.0.pre1 vs lib/reel/websocket.rb in reel-0.6.0.pre2

- old
+ new

@@ -1,21 +1,21 @@ require 'forwardable' require 'websocket/driver' -require 'rack' module Reel class WebSocket extend Forwardable include ConnectionMixin include RequestMixin attr_reader :socket def_delegators :@socket, :addr, :peeraddr + def_delegators :@driver, :ping def initialize(info, connection) - driver_env = DriverEnvironment.new(info, connection.socket) - + driver_env = DriverEnvironment.new(info, connection.socket) + @socket = connection.hijack_socket @request_info = info @driver = ::WebSocket::Driver.rack(driver_env) @driver.on(:close) do @@ -96,22 +96,22 @@ attr_reader :env, :url, :socket def_delegators :socket, :write - def initialize(info, socket) - @url = info.url + RACK_HEADERS = { + 'Origin' => 'HTTP_ORIGIN', + 'Sec-WebSocket-Key' => 'HTTP_SEC_WEBSOCKET_KEY', + 'Sec-WebSocket-Key1' => 'HTTP_SEC_WEBSOCKET_KEY1', + 'Sec-WebSocket-Key2' => 'HTTP_SEC_WEBSOCKET_KEY2', + 'Sec-WebSocket-Extensions' => 'HTTP_SEC_WEBSOCKET_EXTENSIONS', + 'Sec-WebSocket-Protocol' => 'HTTP_SEC_WEBSOCKET_PROTOCOL', + 'Sec-WebSocket-Version' => 'HTTP_SEC_WEBSOCKET_VERSION' + } - env_hash = Hash[info.headers.map { |key, value| ['HTTP_' + key.upcase.gsub('-','_'),value ] }] - - env_hash.merge!({ - :method => info.method, - :input => info.body.to_s, - 'REMOTE_ADDR' => info.remote_addr - }) - - @env = ::Rack::MockRequest.env_for(@url, env_hash) - + def initialize(info, socket) + @env, @url = {}, info.url + RACK_HEADERS.each {|k,v| @env[v] = info.headers[k]} @socket = socket end end class MessageStream