UNPKG

massping

Version:

Mass send http requests for test web application

77 lines (64 loc) 1.88 kB
#!/usr/bin/env node import net from 'net' const content = `<!DOCTYPE html> <html> <head> <title>504 Gateway Timeout</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no" /> <style> html { color-scheme: light dark; } body { padding: 2em; max-width: 32em; margin: 0 auto; text-align: center; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>504 Gateway Timeout</h1> <hr> <p>massping/1.0.6</p> </body> </html> ` const server = net.createServer((socket) => { const clientIP = socket.remoteAddress; const clientPort = socket.remotePort; socket.on('data', (data) => { const msg = data.toString(); console.log(`[${new Date().toISOString().slice(11, 19)}] <-` + ` ${clientIP.replace(/^::ffff:/, '')}:${clientPort}\n` + msg); const requestLine = msg.split('\r\n')[0] || ''; const [method, path, protocol] = requestLine.split(' '); const response = [ 'HTTP/1.1 504 Gateway Timeout', 'Content-Type: text/html; charset=utf-8', `Content-Length: ${content.length}`, `Date: ${new Date().toUTCString()}`, 'Server: massping', 'Connection: close', '', content ].join('\r\n'); setTimeout(() => { socket.write(response); socket.end(); }, Math.random() * 5000 + 5000) }); socket.on('error', (err) => { console.error('socket: ' + err); }) }); server.on('error', (err) => { console.error('server: ' + err); }) export default (port = 8504) => { server.listen(port, () => { console.log('listen [::]:' + port); }); }