lib/em-websocket/handshake76.rb in em-websocket-0.3.8 vs lib/em-websocket/handshake76.rb in em-websocket-0.4.0

- old
+ new

@@ -1,33 +1,30 @@ require 'digest/md5' -module EventMachine - module WebSocket - module Handshake76 - def handshake +module EventMachine::WebSocket + module Handshake76 + class << self + def handshake(headers, path, secure) challenge_response = solve_challenge( - request['sec-websocket-key1'], - request['sec-websocket-key2'], - request['third-key'] + headers['sec-websocket-key1'], + headers['sec-websocket-key2'], + headers['third-key'] ) - location = "#{request['host'].scheme}://#{request['host'].host}" - location << ":#{request['host'].port}" if request['host'].port - location << request['path'] + scheme = (secure ? "wss" : "ws") + location = "#{scheme}://#{headers['host']}#{path}" upgrade = "HTTP/1.1 101 WebSocket Protocol Handshake\r\n" upgrade << "Upgrade: WebSocket\r\n" upgrade << "Connection: Upgrade\r\n" upgrade << "Sec-WebSocket-Location: #{location}\r\n" - upgrade << "Sec-WebSocket-Origin: #{request['origin']}\r\n" - if protocol = request['sec-websocket-protocol'] + upgrade << "Sec-WebSocket-Origin: #{headers['origin']}\r\n" + if protocol = headers['sec-websocket-protocol'] validate_protocol!(protocol) upgrade << "Sec-WebSocket-Protocol: #{protocol}\r\n" end upgrade << "\r\n" upgrade << challenge_response - - debug [:upgrade_headers, upgrade] return upgrade end private