Ruby 获取并显示API JSON响应是否已更改
我正在使用一个游戏API来实时更新游戏中所有活动玩家的统计信息 我试图让我的代码能够监听这个API(在循环之外),当json响应发生变化时,我的代码将打印在控制台上。我目前正在尝试使用Ruby事件,但我除了从循环中获得任何东西(Ruby 获取并显示API JSON响应是否已更改,ruby,Ruby,我正在使用一个游戏API来实时更新游戏中所有活动玩家的统计信息 我试图让我的代码能够监听这个API(在循环之外),当json响应发生变化时,我的代码将打印在控制台上。我目前正在尝试使用Ruby事件,但我除了从循环中获得任何东西(而true) 您的代码似乎正在做您希望它做的事情 您使用了一种称为轮询的技术。它有它的问题,比如性能和速率限制,你需要考虑。但在这种情况下,不能不使用循环。因为这就是投票的本质 您可以使用一些异步调度器(比如sidekiq),在每次http请求之后,您可以在将来安排另
而true
)
您的代码似乎正在做您希望它做的事情 您使用了一种称为轮询的技术。它有它的问题,比如性能和速率限制,你需要考虑。但在这种情况下,不能不使用循环。因为这就是投票的本质 您可以使用一些异步调度器(比如sidekiq),在每次http请求之后,您可以在将来安排另一个。或者你可以用宝石之类的东西。这样可以避免使用循环 如果要避免在服务器上没有任何更改的情况下发出请求,则需要使用一些WebSocket或所谓的长轮询。但是idk如果您要与之交谈的api支持它
或者,api可以创建一个webhook,当发生变化时,api会调用您。您的代码似乎正是您希望它做的事情 您使用了一种称为轮询的技术。它有它的问题,比如性能和速率限制,你需要考虑。但在这种情况下,不能不使用循环。因为这就是投票的本质 您可以使用一些异步调度器(比如sidekiq),在每次http请求之后,您可以在将来安排另一个。或者你可以用宝石之类的东西。这样可以避免使用循环 如果要避免在服务器上没有任何更改的情况下发出请求,则需要使用一些WebSocket或所谓的长轮询。但是idk如果您要与之交谈的api支持它 或者,api可以创建一个webhook,当发生更改时,api会调用您。检查
old_data = ""
while true
sleep 1
data = Utils.req("GET", "https://127.0.0.1:2999/liveclientdata/playerscores?summonerName=Yoruku", {}, false)
#{"assists":0,"creepScore":50,"deaths":0,"kills":5,"wardScore":0}
next if data.eql? old_data
old_data = data
p "NEW DATA: #{data}"
end