Skip to content
Snippets Groups Projects
Commit fb6aa7ad authored by Eugen Rochko's avatar Eugen Rochko
Browse files

Add tracking of delay to streaming API

parent 6cdcac13
No related branches found
No related tags found
No related merge requests found
......@@ -123,7 +123,7 @@ const Modal = React.createClass({
window.addEventListener('keyup', this._listener);
},
componentDidUnmount () {
componentWillUnmount () {
window.removeEventListener('keyup', this._listener);
},
......
......@@ -30,6 +30,7 @@ class FeedManager
end
def broadcast(timeline_id, options = {})
options[:queued_at] = (Time.now.to_f * 1000.0).to_i
ActionCable.server.broadcast("timeline:#{timeline_id}", options)
end
......
......@@ -101,7 +101,15 @@ const streamFrom = (redisClient, id, req, output, needsFiltering = false) => {
log.verbose(`Starting stream from ${id} for ${req.accountId}`)
redisClient.on('message', (channel, message) => {
const { event, payload } = JSON.parse(message)
const { event, payload, queued_at } = JSON.parse(message)
const transmit = () => {
const now = new Date().getTime()
const delta = now - queued_at;
log.silly(`Transmitting for ${req.accountId}: ${event} ${payload} Delay: ${delta}ms`)
output(event, payload)
}
// Only messages that may require filtering are statuses, since notifications
// are already personalized and deletes do not matter
......@@ -127,13 +135,11 @@ const streamFrom = (redisClient, id, req, output, needsFiltering = false) => {
return
}
log.silly(`Transmitting for ${req.accountId}: ${event} ${payload}`)
output(event, payload)
transmit()
})
})
} else {
log.silly(`Transmitting for ${req.accountId}: ${event} ${payload}`)
output(event, payload)
transmit()
}
})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment