Class: SockJS::Transports::HTMLFile

Inherits:
ConsumingTransport show all
Defined in:
lib/sockjs/transports/htmlfile.rb

Constant Summary collapse

HTML_PREFIX =
<<-EOT.chomp.freeze
<!doctype html>
<html><head>
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head><body><h2>Don't panic!</h2>
  <script>
    document.domain = document.domain;
    var c = parent.
EOT
HTML_POSTFIX =
(<<-EOH + (" " * (1024 - HTML_PREFIX.bytesize)) + "\r\n\r\n").freeze
;
    c.start();
    function p(d) {c.message(d);};
    window.onload = function() {c.stop();};
  </script>
EOH

Instance Attribute Summary

Attributes inherited from Endpoint

#connection, #options

Attributes included from Endpoint::ClassMethods

#method, #prefix

Instance Method Summary collapse

Methods inherited from ConsumingTransport

#closing_frame, #finish_response, #heartbeat_frame, #messages_frame, #opening_frame, #process_session, #request_closed, #send_data

Methods inherited from SockJS::Transport

#exception_response, #handle_request, #handle_session_unavailable, #request_data, #server_key, #session_key

Methods inherited from SessionEndpoint

routing_prefix

Methods inherited from Endpoint

#build_error_response, #build_response, #call, #empty_string, #error_content_type, #handle, #handle_request, #initialize, #inspect, #response_class

Methods included from Endpoint::ClassMethods

#add_route, #add_routes, #endpoints, #register, #route_conditions, #routing_prefix

Constructor Details

This class inherits a constructor from SockJS::Endpoint

Instance Method Details

#format_frame(response, frame) ⇒ Object

Raises:

  • (TypeError)


62
63
64
65
66
# File 'lib/sockjs/transports/htmlfile.rb', line 62

def format_frame(response, frame)
  raise TypeError.new("Payload must not be nil!") if frame.nil?

  "<script>\np(#{frame.to_s.to_json});\n</script>\r\n"
end

#get_session(response) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/sockjs/transports/htmlfile.rb', line 39

def get_session(response)
  if response.request.callback.nil? or response.request.callback.empty?
    raise SockJS::HttpError.new(500, '"callback" parameter required')
  end

  super
end

#handle_http_error(request, error) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/sockjs/transports/htmlfile.rb', line 51

def handle_http_error(request, error)
  response = build_response(request)
  response.status = error.status
  response.set_no_cache
  response.set_content_type(:html)

  SockJS::debug "Built error response: #{response.inspect}"
  response.write(error.message)
  response
end

#response_beginning(response) ⇒ Object



47
48
49
# File 'lib/sockjs/transports/htmlfile.rb', line 47

def response_beginning(response)
  response.write(HTML_PREFIX + response.request.callback + HTML_POSTFIX)
end

#setup_response(request, response) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/sockjs/transports/htmlfile.rb', line 30

def setup_response(request, response)
  response.status = 200
  response.set_content_type(:html)
  response.set_no_cache
  response.set_session_id(request.session_id)

  response
end