import express from 'express'; import multer from 'multer'; import ws from 'ws'; import EventEmitter from 'events'; import cors from 'cors'; const upload = multer(); const app = express(); const port = process.env.PORT || 3000 const events = new EventEmitter(); app.use(cors()); app.get('/show-requests', ( _, res ) => { res.send('REQUEST VIEWERPlease use developer console to see mirrored requests'); }) app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(upload.array()); app.use('/static-assets', express.static('web-static')); app.use( (req, res) => { const data = { body: req.body, headers: req.headers, ip: req.ip, path: req.path, protocol: req.protocol, xhr: req.xhr, subdomains: req.subdomains, secure: req.secure, ips: req.ips, hostname: req.hostname, method: req.method, protocol: req.protocol, params: req.params, query: req.query, route: req.route, signedCookie: req.signedCookies, cookies: req.cookies, fresh: req.fresh, stale: req.stale, baseUrl: req.baseUrl, originalUrl: req.originalUrl } events.emit('request', JSON.stringify(data)); console.log(JSON.stringify(data)); res.send("Request Viewer"); }); const wsServer = new ws.Server({ noServer: true }); wsServer.on('connection', socket => { socket.on('message', message => { if ( message === "PING" ) { return socket.send("PONG"); } if ( message === "TEST" ) { return socket.send("TEST"); } console.log(message); }); const handler = (e) => socket.send(e); events.on('request', handler); socket.onclose = () => events.off('request', handler); }) const server = app.listen(port, () => { console.log(`LISTENING AT http://localhost:${port}`); }) server.on('upgrade', (request, socket, head) => { wsServer.handleUpgrade(request, socket, head, (socket) => { wsServer.emit('connection', socket, request); }) })