Class: SockJS::Transports::JSONP

Inherits:
PollingConsumingTransport show all
Defined in:
lib/sockjs/transports/jsonp.rb

Instance Attribute Summary

Attributes inherited from Endpoint

#connection, #http_origin, #options, #remote_addr

Attributes included from Endpoint::ClassMethods

#method, #prefix

Instance Method Summary collapse

Methods inherited from PollingConsumingTransport

#process_session

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, #response_beginning, #server_key, #session_key

Methods inherited from SessionEndpoint

routing_prefix

Methods inherited from Endpoint

#build_error_response, #build_response, #call, #empty_string, #handle, #handle_http_error, #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

#error_content_typeObject



10
11
12
# File 'lib/sockjs/transports/jsonp.rb', line 10

def error_content_type
  :html
end

#format_frame(response, payload) ⇒ Object

Raises:

  • (TypeError)


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

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

  # Yes, JSONed twice, there isn't a better way, we must pass
  # a string back, and the script, will be evaled() by the browser.
  "#{response.request.callback}(#{super.chomp.to_json});\r\n"
end

#get_session(response) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/sockjs/transports/jsonp.rb', line 23

def get_session(response)
  if response.request.callback
    super
  else
    raise HttpError.new(500, '"callback" parameter required')
  end
end

#setup_response(request, response) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/sockjs/transports/jsonp.rb', line 14

def setup_response(request, response)
  response.status = 200
  response.set_content_type(:javascript)
  response.set_access_control(request.origin)
  response.set_no_cache
  response.set_session_id(request.session_id)
  return response
end