Sha256: 6a886da738142d5bbbc4a97e056beb0a6187f45c5375ee5f4a6bd152aa58035a

Contents?: true

Size: 1002 Bytes

Versions: 27

Compression:

Stored size: 1002 Bytes

Contents

require 'faye/websocket'
require 'volt/server/socket_connection_handler'

# Load websocket options once at boot
# The ENV['DYNO'] option lets it kick in automatically if we're on heroku.
WEBSOCKET_OPTIONS = if !ENV['NO_WEBSOCKET_PING'] &&
  (ENV['WEBSOCKET_PING_TIME'] || ENV['DYNO'])
  {ping: (ENV['WEBSOCKET_PING_TIME'] || 30).to_i}
else
  {}
end

module Volt
  class WebsocketHandler
    def initialize(app)
      @app = app
    end

    def call(env)
      if Faye::WebSocket.websocket?(env)
        ws = Faye::WebSocket.new(env, nil, WEBSOCKET_OPTIONS)

        socket_connection_handler = SocketConnectionHandler.new(ws)

        ws.on :message do |event|
          socket_connection_handler.process_message(event.data)
        end

        ws.on :close do |event|
          socket_connection_handler.closed

          ws = nil
        end

        # Return async Rack response
        ws.rack_response
      else
        # Call down to the app
        @app.call(env)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
volt-0.9.7.pre8 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.7.pre7 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.7.pre6 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.7.pre5 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.7.pre3 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.7.pre2 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.6 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.6.pre3 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.6.pre2 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.6.pre1 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre12 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre11 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre9 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre8 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre7 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre6 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre5 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre4 lib/volt/server/websocket/websocket_handler.rb
volt-0.9.5.pre3 lib/volt/server/websocket/websocket_handler.rb