Reputation: 199
I created a Room chat, used Opentok like this:
in room.rb
model
require 'opentok'
def config_opentok
@opentok ||= OpenTok::OpenTok.new Rails.application.secrets.open_tok_api_key, Rails.application.secrets.open_tok_secret
end
def set_opentok_params
session = config_opentok.create_session
self.session_id = session.session_id
self.opentok_token = session.generate_token({
expire_time: Time.now.to_i + 30.days
})
end
It worked well but sometimes I got this error:
OpenTok::OpenTokError: Failed to connect to OpenTok. Response code: execution expired
How can I fix it?
Thanks.
Upvotes: 2
Views: 1248
Reputation: 1370
def config_opentok
tries = 3
begin
@opentok = OpenTok::OpenTok.new api_key, api_secret
logger.debug "opentok connected."
rescue Errno::ETIMEDOUT => e
log.error e
tries -= 1
if tries > 0
logger.debug "retrying opentok.new..."
retry
else
logger.debug "opentok.new timed out..."
puts "ERROR: #{e.message}"
end
end
end
This worked for me. See also: Cleanly Retrying Blocks of Code After an Exception in Ruby
Upvotes: 1