Socket
Socket
Sign inDemoInstall

fastcgi-stream

Package Overview
Dependencies
1
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    fastcgi-stream

Fast FastCGI Stream wrapper for reading/writing FCGI records.


Version published
Weekly downloads
67
decreased by-20.24%
Maintainers
1
Install size
108 kB
Created
Weekly downloads
 

Readme

Source

fastcgi-stream

Build Status Dependency Information Code Climate Test Coverage npmjs.org

Read & write FastCGI records from a node.js stream like a boss.

Quickstart

npm install fastcgi-stream --save

The FastCGI stream library has two main pieces, the FastCGIStream itself and the records that can be sent and received on it.

The FastCGIStream wraps an existing Stream to send/receive FCGI records on. 99% of the time this is going to be a net.Socket.

var fastcgi = require('fastcgi-stream');

var fcgiStream = new fastcgi.FastCGIStream(mySocket);

// Send FastCGI records.
fcgiStream.writeRecord(requestId, new fastcgi.records.BeginRequest(
	fastcgi.records.BeginRequest.roles.RESPONDER,
	fastcgi.records.BeginRequest.flags.KEEP_CONN
));

// Receive FastCGI records.
fcgiStream.on('record', function(requestId, record) {
	if(requestId == fastcgi.constants.NULL_REQUEST_ID) {
		// Management record.
	}
	else {
		switch(record.TYPE) {
			case fastcgi.records.BeginRequest.TYPE: {
				// Request beginning. What role are we being asked to fulfill?
				if(record.role == fastcgi.records.BeginRequest.role.RESPONDER) {
					// Etc...
				}
				
				break;
			}
		}
	}
});

Records

All record objects live in the fastcgi.records namespace. Each record will now be listed. The listing will detail the constructor and parameters each record contains.

Constructor args are never mandatory, you can pass as many or as few arguments as you like.

BeginRequest

var record = new fastcgi.records.BeginRequest(role, flags);
  • .role - the role being requested. Possible roles as follows:
    • fastcgi.records.BeginRequest.roles.RESPONDER
    • fastcgi.records.BeginRequest.roles.AUTHORIZER
    • fastcgi.records.BeginRequest.roles.FILTER
  • .flags - additional flags for the request. There is only one in the specification:
    • fastcgi.records.BeginRequest.flags.KEEP_CONN

AbortRequest

var record = new fastcgi.records.AbortRequest();

EndRequest

var record = new fastcgi.records.EndRequest(appStatus, protocolStatus);
  • .appStatus - application return status code
  • .protocolStatus - protocol return status code, can be one of the following:
    • fastcgi.records.EndRequest.protocolStatus.REQUEST_COMPLETE
    • fastcgi.records.EndRequest.protocolStatus.CANT_MPX_CONN
    • fastcgi.records.EndRequest.protocolStatus.OVERLOADED
    • fastcgi.records.EndRequest.protocolStatus.UNKNOWN_ROLE

Params

var params = [
	['Name', 'Value'],
	['AnotherName', 'AnotherValue']
];

// Params is optional.
var record = new fastcgi.records.Params(params);

.params - an array of name/value array pairs

StdIn/StdOut/StdErr/Data

All of these records take the same constructor and have the same properties.

var body = 'String';
var record = new fastcgi.records.StdIn(body);

// .. or ..

var body = new Buffer('Contents.');
var record = new fastcgi.records.StdIn(body);

GetValues

var values = ['Name', 'AnotherName'];
var record = new fastcgi.records.GetValues(values);

.values - array of values being requested

GetValuesResult

var result = [
	['Name', 'Value'],
	['AnotherName', 'AnotherValue']
];

var record = new fastcgi.records.GetValuesResult(result);

.values - array of name/value pairs representing the result.

UnknownType

var record = new fastcgi.records.UnknownType(type);

.type - the type of record that was not recognized.

License

node-fastcgi-stream is free and unencumbered public domain software. For more information, see the accompanying UNLICENSE file.

Keywords

FAQs

Last updated on 17 Nov 2015

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc