Settings

Theme

I Built a One File Edge Probe to Tell Me When Time Is Lying

physical-ai.ghost.io

47 points by boulevard 2 months ago · 8 comments

Reader

boulevardOP 2 months ago

Note: This is a sanity probe, not a time discipline tool. rtt/2 and browser timers can be noisy, so treat green/red as a hint, not truth, especially on congested factory networks.

butvacuum a month ago

Interesting, but why not use the timestamp baked into response headers? There's also domain.tld/cdn-cgi/trace for cloudflare. I don't know how cloudflare will take using that page for this though.

  • withinboredom a month ago

    Cross-origin stuff doesn’t always let you get access to those headers and they may not always be there. Some web servers don’t put that there, some do. Some frameworks add them, some don’t.

    • boulevardOP a month ago

      Yes, many servers don’t expose Date to browsers (Access-Control-Expose-Headers), so you can’t read it cross-origin. Also, CDNs/proxies can cache or rewrite headers, my goal was a boring, local /time on the same gateway the tech is testing. Another thing was that Date is seconds-resolution, I want ms and a stable JSON shape. I have found Cloudflare trace to be handy in past, but it’s not my box, it may rate-limit, and adds an extra network hop. For the core question "Is it me or the edge box" I wanted the box itself to answer.

    • boulevardOP a month ago

      This is also why I lean on a tiny JSON route with simple CORS. For anyone wiring this up, they can add

      Access-Control-Allow-Origin: * (or site origin), and Cache-Control: no-store

      Also, watch for mixed content (HTTPS page trying to fetch HTTP gateway), either serve the probe from the gateway or expose /time over HTTPS.

gschizas a month ago

A simple (and stupid) /time.aspx in VB.NET, because that's what was easily available:

    <%
    Dim epochMilliseconds As Long = CLng((DateTime.UtcNow - New DateTime(1970, 1, 1)).TotalMilliseconds)
    Response.Write("{ ""epoch_ms"": " & epochMilliseconds & " }")
    %>
(you need to change "/time" to "/time.aspx" for the original HTML page to work)
  • boulevardOP a month ago

    This is perfect, for completeness, you can extend it with CORS + no-store and ms epoch.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection