module MixinBot::API::Blaze
Public Instance Methods
blaze()
click to toggle source
# File lib/mixin_bot/api/blaze.rb, line 6 def blaze access_token = access_token('GET', '/', '') authorization = format('Bearer %<access_token>s', access_token: access_token) Faye::WebSocket::Client.new( format('wss://%<host>s/', host: blaze_host), ['Mixin-Blaze-1'], headers: { 'Authorization' => authorization }, ping: 60 ) end
start_blaze_connect(reconnect: true) { || ... }
click to toggle source
# File lib/mixin_bot/api/blaze.rb, line 17 def start_blaze_connect(reconnect: true, &_block) ws ||= blaze yield if block_given? ws.on :open do |event| if defined? on_open on_open ws, event else p [Time.now.to_s, :open] ws.send list_pending_message end end ws.on :message do |event| if defined? on_message on_message ws, event else raw = JSON.parse read_ws_message(event.data) p [Time.now.to_s, :message, raw&.[]('action')] ws.send acknowledge_message_receipt(raw['data']['message_id']) unless raw&.[]('data')&.[]('message_id').nil? end end ws.on :error do |event| if defined? on_error on_error ws, event else p [Time.now.to_s, :error] end end ws.on :close do |event| if defined? on_close on_close ws, event else p [Time.now.to_s, :close, event.code, event.reason] end ws = nil start_blaze_connect(&_block) if reconnect end end