# File lib/em-websocket/handshake76.rb, line 6
      def handshake
        challenge_response = solve_challenge(
          request['sec-websocket-key1'],
          request['sec-websocket-key2'],
          request['third-key']
        )

        location  = "#{request['host'].scheme}://#{request['host'].host}"
        location << ":#{request['host'].port}" if request['host'].port
        location << request['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']
          validate_protocol!(protocol)
          upgrade << "Sec-WebSocket-Protocol: #{protocol}\r\n"
        end
        upgrade << "\r\n"
        upgrade << challenge_response

        debug [:upgrade_headers, upgrade]

        return upgrade
      end