aboutsummaryrefslogblamecommitdiffstats
path: root/lib/action_cable/connection/web_socket.rb
blob: 135a28cfe4463025d58ab01850a9406970c5ea7f (plain) (tree)


























                                                                                     
module ActionCable
  module Connection
    # Decorate the Faye::WebSocket with helpers we need.
    class WebSocket
      delegate :rack_response, :close, :on, to: :websocket

      def initialize(env)
        @websocket = Faye::WebSocket.websocket?(env) ? Faye::WebSocket.new(env) : nil
      end

      def possible?
        websocket
      end

      def alive?
        websocket && websocket.ready_state == Faye::WebSocket::API::OPEN
      end

      def transmit(data)
        websocket.send data
      end

      private
        attr_reader :websocket
    end
  end
end