Node.js: a shim for overriding "http" and "websocket" modules.
Also added stubs for Server.address()
This was done to prevent crashes in some popular frameworks like express
Supports both CommonJS and the new ES Modules system syntax e.g:
app.js:
const http = require('http')
app.mjs:
import http from "http"
Usage on Node 14.16.x and higher:
{
"type": "external",
"processes": {"spare": 0},
"working_directory": '/project',
"executable": "/usr/bin/env",
"arguments": [
"node",
"--loader",
"unit-http/require_shim.mjs"
"--require",
"unit-http/require_shim",
"app.js"
]
}
Usage on Node 14.15.x and lower:
{
"type": "external",
"processes": {"spare": 0},
"working_directory": '/project',
"executable": "/usr/bin/env",
"arguments": [
"node",
"--require",
"unit-http/require_shim",
"app.js"
]
}
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
import http from "http"
|
||||
|
||||
http.createServer(function (req, res) {
|
||||
res.writeHead(200, {'Content-Length': 12, 'Content-Type': 'text/plain'})
|
||||
.end('Hello World\n');
|
||||
}).listen(7080);
|
||||
@@ -0,0 +1 @@
|
||||
import("./module.mjs")
|
||||
@@ -0,0 +1,6 @@
|
||||
import http from "http"
|
||||
|
||||
http.createServer(function (req, res) {
|
||||
res.writeHead(200, {'Content-Length': 12, 'Content-Type': 'text/plain'})
|
||||
.end('Hello World\n');
|
||||
}).listen(7080);
|
||||
@@ -0,0 +1,30 @@
|
||||
import http from "http"
|
||||
import websocket from "websocket"
|
||||
|
||||
let server = http.createServer(function() {});
|
||||
let webSocketServer = websocket.server;
|
||||
|
||||
server.listen(7080, function() {});
|
||||
|
||||
var wsServer = new webSocketServer({
|
||||
maxReceivedMessageSize: 0x1000000000,
|
||||
maxReceivedFrameSize: 0x1000000000,
|
||||
fragmentOutgoingMessages: false,
|
||||
fragmentationThreshold: 0x1000000000,
|
||||
httpServer: server,
|
||||
});
|
||||
|
||||
wsServer.on('request', function(request) {
|
||||
var connection = request.accept(null);
|
||||
|
||||
connection.on('message', function(message) {
|
||||
if (message.type === 'utf8') {
|
||||
connection.send(message.utf8Data);
|
||||
} else if (message.type === 'binary') {
|
||||
connection.send(message.binaryData);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
connection.on('close', function(r) {});
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
import("./module.mjs")
|
||||
@@ -0,0 +1,30 @@
|
||||
import http from "http"
|
||||
import websocket from "websocket"
|
||||
|
||||
let server = http.createServer(function() {});
|
||||
let webSocketServer = websocket.server;
|
||||
|
||||
server.listen(7080, function() {});
|
||||
|
||||
var wsServer = new webSocketServer({
|
||||
maxReceivedMessageSize: 0x1000000000,
|
||||
maxReceivedFrameSize: 0x1000000000,
|
||||
fragmentOutgoingMessages: false,
|
||||
fragmentationThreshold: 0x1000000000,
|
||||
httpServer: server,
|
||||
});
|
||||
|
||||
wsServer.on('request', function(request) {
|
||||
var connection = request.accept(null);
|
||||
|
||||
connection.on('message', function(message) {
|
||||
if (message.type === 'utf8') {
|
||||
connection.send(message.utf8Data);
|
||||
} else if (message.type === 'binary') {
|
||||
connection.send(message.binaryData);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
connection.on('close', function(r) {});
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
require("./transitive_http")
|
||||
@@ -0,0 +1,8 @@
|
||||
const http = require("http");
|
||||
|
||||
http.createServer(function (req, res) {
|
||||
res.writeHead(200, {'Content-Length': 12, 'Content-Type': 'text/plain'})
|
||||
.end('Hello World\n');
|
||||
}).listen(7080);
|
||||
|
||||
module.exports = http;
|
||||
@@ -0,0 +1,4 @@
|
||||
require("unit-http").createServer(function (req, res) {
|
||||
res.writeHead(200, {'Content-Length': 12, 'Content-Type': 'text/plain'})
|
||||
.end('Hello World\n');
|
||||
}).listen(7080);
|
||||
Reference in New Issue
Block a user