diff --git a/lib/scout_apm/layer_converters/request_queue_time_converter.rb b/lib/scout_apm/layer_converters/request_queue_time_converter.rb index 3b87dbfe..aa0fe00d 100644 --- a/lib/scout_apm/layer_converters/request_queue_time_converter.rb +++ b/lib/scout_apm/layer_converters/request_queue_time_converter.rb @@ -4,6 +4,8 @@ class RequestQueueTimeConverter < ConverterBase HEADERS = %w(X-Queue-Start X-Request-Start X-QUEUE-START X-REQUEST-START x-queue-start x-request-start) + WEBSOCKET_HEADERS = %w(Sec-WebSocket-Protocol Sec-WebSocket-Version Sec-WebSocket-Key) + def headers request.headers end @@ -16,6 +18,7 @@ def record! return unless headers @context.logger.debug headers.inspect + @context.logger.debug "Request over websocket? #{request_over_websocket?}" raw_start = locate_timestamp return unless raw_start @@ -40,6 +43,10 @@ def record! private + def request_over_websocket? + WEBSOCKET_HEADERS.any? { |header| headers[header] } + end + # Looks through the possible headers with this data, and extracts the raw # value of the header # Returns nil if not found