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
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
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()
}
})