Sha256: 7494e217496e77c8e3f5d68b2c284cb1f45dce436d047e9bfd8492bb9e51748f

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 KB

Contents

module Rack
  module WebSocket
    module Handler
      class Base
                
        autoload :Connection, "#{ROOT_PATH}/websocket/handler/base/connection"

        def on_open
          set_env_instance_variable
          @parent.on_open(@env)
        end # Fired when a client is connected.

        def on_message(msg)
          set_env_instance_variable
          @parent.on_message(@env, msg)
        end # Fired when a message from a client is received.

        def on_close
          set_env_instance_variable
          @parent.on_close(@env)
        end # Fired when a client is disconnected.

        def on_error(error)
          set_env_instance_variable
          @parent.on_error(@env, error)
        end # Fired when error occurs.

        # Set application as parent and forward options
        def initialize(parent, options = {})
          @parent = parent
          @options = options[:backend] || {}
        end

        def set_env_instance_variable
          @parent.instance_variable_set("@env", @env)
        end

        # Implemented in subclass
        def call(env)
          raise 'Not implemented'
        end

        # Implemented in subclass
        def send_data(data)
          raise 'Not implemented'
        end

        # Implemented in subclass
        def close_websocket
          raise 'Not implemented'
        end

        protected

        # Standard async response
        def async_response
          [-1, {}, []]
        end

        # Standard 400 response
        def failure_response
          [ 400, {'Content-Type' => 'text/plain'}, [ 'Bad request' ] ]
        end

      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
websocket-rack-noodles-0.4.3 lib/rack/websocket/handler/base.rb
websocket-rack-noodles-0.4.1 lib/rack/websocket/handler/base.rb
websocket-rack-noodles-0.4.0 lib/rack/websocket/handler/base.rb