Twitch-API ruby gem更新视图计数缓慢,如何获得实时流数据



我正在尝试制作一个应用程序,随着时间的推移跟踪特定Twitch流的观看人数,最终在网页上实时显示。然而,我使用的ruby gem twitchapi似乎只大约每5分钟更新一次视图计数。Twitch的主网站每10-20秒持续更新一次这些信息。

为什么API/gem刷新如此缓慢,或者,是否有一种方法可以直接从网站访问更新数据?

以下是我使用gem:测试Ruby代码

previous_view_count = 0
while true do
@twitch_client = Twitch::Client.new(
client_id: @client_id,
client_secret: @client_secret)
username = "ludwig"
twitch_id = @twitch_client.get_users({login: username}).data.first.id
stream_info = @twitch_client.get_streams({user_id: twitch_id}).data.first
if stream_info.viewer_count != previous_view_count then
puts("Data for Twitch streamer: " + username)
puts("Title: " + stream_info.title)
puts("View count: " + stream_info.viewer_count.to_s)
previous_view_count = stream_info.viewer_count
end
sleep(60)
puts("-----")
end

看起来Twitch API的查看器计数只以非常慢的间隔更新。最好的办法是考虑与他们的pubsub端点建立WebSocket连接。尽管他们的文档中没有明确的查看器计数,在使用浏览器的开发工具观看流的同时跟踪websocket连接,但似乎您可以订阅video-playback-by-id主题并每30秒接收一次查看器计数。

以下是LISTEN有效载荷示例:

{"type":"LISTEN","nonce":"zeMjhYYhJdwfVEjLGvO84eBSAHsIYk","data":{"topics":["video-playback-by-id.121059319"],"auth_token":"some_auth_token"}}

以下是一个示例MESSAGE响应有效载荷:

{"type":"MESSAGE","data":{"topic":"video-playback-by-id.121059319","message":"{"type":"viewcount","server_time":1618283400.433843,"viewers":28735}"}}

最新更新