class Citrus::PushSchedulers::Direct
Public Class Methods
new(app, args)
click to toggle source
Initialize the component
@param [Object] app @param [Hash] args
# File lib/citrus/push_schedulers/direct.rb, line 18 def initialize app, args @app = app end
Public Instance Methods
schedule(req_id, route, msg, recvs, args, &block)
click to toggle source
Schedule
@param [Integer] req_id @param [String] route @param [Hash] msg @param [Array] recvs @param [Hash] args
# File lib/citrus/push_schedulers/direct.rb, line 29 def schedule req_id, route, msg, recvs, args, &block if args[:type] == 'broadcast' do_broadcast msg, args[:user_args] else do_batch_push msg, recvs end EM.next_tick { block.call } if block_given? end
Private Instance Methods
do_batch_push(msg, recvs)
click to toggle source
Do batch push
@param [Hash] msg @param [Array] recvs
@private
# File lib/citrus/push_schedulers/direct.rb, line 68 def do_batch_push msg, recvs session_service = @app.session_service recvs.each { |recv| session_service.send_message recv, msg } end
do_broadcast(msg, args={})
click to toggle source
Do broadcast
@param [Hash] msg @param [Hash] args
@private
# File lib/citrus/push_schedulers/direct.rb, line 47 def do_broadcast msg, args={} channel_service = @app.channel_service session_service = @app.session_service if args[:binded] session_service.sessions.each { |session| session_service.send_message_by_uid session.uid, msg } else session_service.sessions.each { |session| session_service.send_message session.id, msg } end end