Sha256: 1bd63b6fb65bd33760f208df94415a523fa27d587f1c1ec35979f55498e10a78

Contents?: true

Size: 1.28 KB

Versions: 14

Compression:

Stored size: 1.28 KB

Contents

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

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}"
    end
  end

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

    QueryTasks.new(self).close!
  end

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

end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
volt-0.8.8 lib/volt/server/socket_connection_handler.rb
volt-0.8.7 lib/volt/server/socket_connection_handler.rb
volt-0.8.6 lib/volt/server/socket_connection_handler.rb
volt-0.8.5 lib/volt/server/socket_connection_handler.rb
volt-0.8.4 lib/volt/server/socket_connection_handler.rb
volt-0.8.3 lib/volt/server/socket_connection_handler.rb
volt-0.8.2 lib/volt/server/socket_connection_handler.rb
volt-0.8.1 lib/volt/server/socket_connection_handler.rb
volt-0.8.0 lib/volt/server/socket_connection_handler.rb
volt-0.7.23 lib/volt/server/socket_connection_handler.rb
volt-0.7.22 lib/volt/server/socket_connection_handler.rb
volt-0.7.21 lib/volt/server/socket_connection_handler.rb
volt-0.7.20 lib/volt/server/socket_connection_handler.rb
volt-0.7.19 lib/volt/server/socket_connection_handler.rb