Sha256: d50195adb0ae0c7a937b5c21de5bd7106f05bddc95a8c3e5e50c5a619d7b75e6

Contents?: true

Size: 1.24 KB

Versions: 9

Compression:

Stored size: 1.24 KB

Contents

require 'em-http'
require 'em-http/version'

module Faye
  
  class Transport::Http < Transport
    def self.usable?(endpoint)
      endpoint.is_a?(String)
    end
    
    def request(message, timeout)
      retry_block = retry_block(message, timeout)
      
      content = JSON.unparse(message)
      params = {
        :head => {
          'Content-Type'    => 'application/json',
          'host'            => URI.parse(@endpoint).host,
          'Content-Length'  => content.length
        },
        :body    => content,
        :timeout => -1  # for em-http-request < 1.0
      }
      if EventMachine::HttpRequest::VERSION.split('.')[0].to_i >= 1
        options = {   # for em-http-request >= 1.0
          :inactivity_timeout => 0,    # connection inactivity (post-setup) timeout (0 = disable timeout)
        }
        request = EventMachine::HttpRequest.new(@endpoint, options).post(params)
      else
        request = EventMachine::HttpRequest.new(@endpoint).post(params)
      end
      request.callback do
        begin
          receive(JSON.parse(request.response))
        rescue
          retry_block.call
        end
      end
      request.errback { retry_block.call }
    end
  end
  
  Transport.register 'long-polling', Transport::Http
  
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
faye-0.6.8 lib/faye/transport/http.rb
faye-0.6.7 lib/faye/transport/http.rb
faye-0.6.6 lib/faye/transport/http.rb
faye-0.6.5 lib/faye/transport/http.rb
faye-0.6.4 lib/faye/transport/http.rb
faye-0.6.3 lib/faye/transport/http.rb
faye-0.6.2 lib/faye/transport/http.rb
faye-0.6.1 lib/faye/transport/http.rb
faye-0.6.0 lib/faye/transport/http.rb