How to Simulate Long HTTP Requests

By  on  

It happens less frequently these days but there are times when we need to accommodate for a HTTP request timing out. The service could be down, under heavy traffic, or just poorly coded, or any host of other issues.

Whenever I need to simulate a long HTTP request, I use a bit of PHP to make it happen:

<?php
        // Don't resolve this request for 5 seconds
        sleep(5);
        
        // A generic response
        echo 'This is the response!';

        // ... or hit a URL to make the case more realistic
        echo file_get_contents('https://website.tld/endpoint');
?>

With that script created, I make PHP start a server so I can make the request locally:

php -S localhost:8000

Now I can hit http://localhost:8000 and get the long request I want!

There are a number of ways you can accomplish these long form requests but this has always been a favorite of mine!

Recent Features

  • By
    7 Essential JavaScript Functions

    I remember the early days of JavaScript where you needed a simple function for just about everything because the browser vendors implemented features differently, and not just edge features, basic features, like addEventListener and attachEvent.  Times have changed but there are still a few functions each developer should...

  • By
    Vibration API

    Many of the new APIs provided to us by browser vendors are more targeted toward the mobile user than the desktop user.  One of those simple APIs the Vibration API.  The Vibration API allows developers to direct the device, using JavaScript, to vibrate in...

Incredible Demos

  • By
    AJAX Page Loads Using MooTools Fx.Explode

    Note: All credit for Fx.Explode goes to Jan Kassens. One of the awesome pieces of code in MooTools Core Developer Jan Kassens' sandbox is his Fx.Explode functionality. When you click on any of the designated Fx.Explode elements, the elements "explode" off of the...

  • By
    WebKit-Specific Style:  -webkit-appearance

    I was recently scoping out the horrid source code of the Google homepage when I noticed the "Google Search" and "I'm Feeling Lucky" buttons had a style definition I hadn't seen before:  -webkit-appearance.  The value assigned to the style was "push-button."  They are buttons so that...

Discussion

  1. That’s cool! Thanks for the tip.
    I could see having it take a query param to set the sleep time arbitrarily for different scenarios you’re simulating.

  2. Charlie

    Thanks David always love your content.
    Although in this particular case i fail to understand a practical use, could you share an example?

    thanks !

  3. Dima

    And here is concise way to do it in NodeJs, the server will wait for 3 seconds before response:

    const http = require('http')
    
    const server = http.createServer((req, res) => {
      setTimeout(() => {
        res.writeHead(200)
        res.end('Hello, World!')
      }, 3000)
    })
    server.listen(8080)
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!