Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

express-timeout-handler

Package Overview
Dependencies
Maintainers
3
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

express-timeout-handler

Express timeout middleware that ensures a response is returned to the client on a timeout event.

  • 2.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
21K
decreased by-46%
Maintainers
3
Weekly downloads
 
Created
Source

express-timeout-handler

npm version Build Status Dependency Status devDependency Status Coverage Status

Express timeout middleware that ensures a response is returned to the client on a timeout event.

Add a global timeout to all your routes in express and add individual timeouts to specific routes. If a timeout happens the onTimeout function will be called. The onTimeout function MUST terminate the request with a response. When a timeout happens, this module will set a globalTimeout property on the response object to true and disable all methods on the response object which might try and send something after the timeout happened.

Note on streams: whenever a stream has started streaming to the response object, the onTimeout function will not be triggered. Or in other words: if a timeout happens after we start streaming, the stream will not be interrupted.

npm install --save express-timeout-handler

Usage

var timeout = require('express-timeout-handler');
var express = require('express');
var app = express();

var options = {

  // Optional. This will be the default timeout for all endpoints.
  // If omitted there is no default timeout on endpoints
  timeout: 3000,

  // Optional. This function will be called on a timeout and it MUST
  // terminate the request.
  // If omitted the module will end the request with a default 503 error.
  onTimeout: function(req, res) {
    res.status(503).send('Service unavailable. Please retry.');
  },

  // Optional. Define a function to be called if an attempt to send a response
  // happens after the timeout where:
  // - method: is the method that was called on the response object
  // - args: are the arguments passed to the method
  // - requestTime: is the duration of the request
  // timeout happened
  onDelayedResponse: function(req, method, args, requestTime) {
    console.log(`Attempted to call ${method} after timeout`);
  },

  // Optional. Provide a list of which methods should be disabled on the
  // response object when a timeout happens and an error has been sent. If
  // omitted, a default list of all methods that tries to send a response
  // will be disable on the response object
  disable: ['write', 'setHeaders', 'send', 'json', 'end'];
};

app.use(timeout.handler(options));

app.get('/greet', //The default timeout is in effect here
  function (req, res) {
    res.send('Hello world!');
  }
);

app.get('/leave',
  // This is a specific endpoint timeout which overrides the default timeout
  timeout.set(4000),
  function (req, res) {
    res.send('Goodbye!');
  }
);

app.listen(3000, function () {
  console.log('Server listening on port 3000');
});

License

MIT

FAQs

Package last updated on 26 Jul 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc