Sha256: da45f34a67800b66ea361aca36db678e519fa5664cf9ad6c163183fe124bc391

Contents?: true

Size: 1.43 KB

Versions: 16

Compression:

Stored size: 1.43 KB

Contents

require 'json'
require 'sockjs/session'
require File.join(File.dirname(__FILE__), '../../../app/volt/tasks/query_tasks')

module Volt
  class SocketConnectionHandler < SockJS::Session
    # Create one instance of the dispatcher

    def self.dispatcher=(val)
      @@dispatcher = val
    end

    def self.dispatcher
      @@dispatcher
    end

    # Sends a message to all, optionally skipping a users channel
    def self.send_message_all(skip_channel = nil, *args)
      @@channels.each do |channel|
        if skip_channel && channel == skip_channel
          next
        end
        channel.send_message(*args)
      end
    end

    def initialize(session, *args)
      @session = session

      @@channels ||= []
      @@channels << self

      super
    end

    def process_message(message)
      # self.class.message_all(message)
      # Messages are json and wrapped in an array
      message = JSON.parse(message).first

      @@dispatcher.dispatch(self, message)
    end

    def send_message(*args)
      str = JSON.dump([*args])

      begin
        send(str)
      rescue MetaState::WrongStateError => e
        puts "Tried to send to closed connection: #{e.inspect}"

        # Mark this channel as closed
        closed
      end
    end

    def closed
      # Remove ourself from the available channels
      @@channels.delete(self)

      QueryTasks.new(self).close!
    end

    def inspect
      "<#{self.class}:#{object_id}>"
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
volt-0.8.27.beta3 lib/volt/server/socket_connection_handler.rb
volt-0.8.27.beta2 lib/volt/server/socket_connection_handler.rb
volt-0.8.27.beta1 lib/volt/server/socket_connection_handler.rb
volt-0.8.26.beta1 lib/volt/server/socket_connection_handler.rb
volt-0.8.26 lib/volt/server/socket_connection_handler.rb
volt-0.8.24 lib/volt/server/socket_connection_handler.rb
volt-0.8.23 lib/volt/server/socket_connection_handler.rb
volt-0.8.22 lib/volt/server/socket_connection_handler.rb
volt-0.8.22.beta2 lib/volt/server/socket_connection_handler.rb
volt-0.8.22.beta1 lib/volt/server/socket_connection_handler.rb
volt-0.8.21 lib/volt/server/socket_connection_handler.rb
volt-0.8.20 lib/volt/server/socket_connection_handler.rb
volt-0.8.19 lib/volt/server/socket_connection_handler.rb
volt-0.8.18 lib/volt/server/socket_connection_handler.rb
volt-0.8.17 lib/volt/server/socket_connection_handler.rb
volt-0.8.16 lib/volt/server/socket_connection_handler.rb