Class: SockJS::DeliveryTransport

Inherits:
Transport show all
Defined in:
lib/sockjs/transport.rb

Instance Attribute Summary

Attributes inherited from Endpoint

#connection, #options

Attributes included from Endpoint::ClassMethods

#method, #prefix

Instance Method Summary collapse

Methods inherited from 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, #error_content_type, #format_frame, #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

#extract_message(request) ⇒ Object



329
330
331
332
333
# File 'lib/sockjs/transport.rb', line 329

def extract_message(request)
  body = request.data.read
  raise "Payload expected." if body.empty?
  return body
end

#get_session(response) ⇒ Object



343
344
345
346
347
348
349
350
351
352
# File 'lib/sockjs/transport.rb', line 343

def get_session(response)
  begin
    session = connection.get_session(session_key(response))
    response_beginning(response)
    return session
  rescue KeyError
    SockJS::debug("Missing session for #{session_key(response)} - invalid request")
    raise SessionUnavailableError
  end
end

#process_session(session, response) ⇒ Object



323
324
325
326
327
# File 'lib/sockjs/transport.rb', line 323

def process_session(session, response)
  session.receive_message(extract_message(response.request))

  successful_response(response)
end

#setup_response(response) ⇒ Object



335
336
337
# File 'lib/sockjs/transport.rb', line 335

def setup_response(response)
  response.status = 204
end

#successful_response(response) ⇒ Object



339
340
341
# File 'lib/sockjs/transport.rb', line 339

def successful_response(response)
  response.finish
end