Ruby 获取并显示API JSON响应是否已更改

Ruby 获取并显示API JSON响应是否已更改,ruby,Ruby,我正在使用一个游戏API来实时更新游戏中所有活动玩家的统计信息 我试图让我的代码能够监听这个API(在循环之外),当json响应发生变化时,我的代码将打印在控制台上。我目前正在尝试使用Ruby​​事件,但我除了从循环中获得任何东西(而true) 您的代码似乎正在做您希望它做的事情 您使用了一种称为轮询的技术。它有它的问题,比如性能和速率限制,你需要考虑。但在这种情况下,不能不使用循环。因为这就是投票的本质 您可以使用一些异步调度器(比如sidekiq),在每次http请求之后,您可以在将来安排另

我正在使用一个游戏API来实时更新游戏中所有活动玩家的统计信息

我试图让我的代码能够监听这个API(在循环之外),当json响应发生变化时,我的代码将打印在控制台上。我目前正在尝试使用Ruby​​事件,但我除了从循环中获得任何东西(
而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