1

I'm trying to create a fake debugger target for chrome devtool protocol. I created a simple http server using nodejs and start listing at port 9229 (just like nodejs). I implemented 2 url /json/version & /json which returns exact same response that nodejs inspect does. Also started to websocket server but the only requests server is getting is /json/version & /json and also target is not present in remote targets.

My source code is below

var WebSocket = require('ws');
var http = require('http');


function sendJson(json, response) {
    response.writeHead(200, {
        "Content-Type": "application/json; charset=UTF-8",
        "Cache-Control": "no-cache"
    })
    response.write(JSON.stringify(json));
    response.end();
}

var server = http.createServer(function (request, response) {
    console.log((new Date()) + ' Received request for ' + request.url);

    switch (request.url) {
        case '/json/version':
            sendJson({
                "Browser": "node.js/v8.11.4",
                "Protocol-Version": "1.1"
            }, response);
            break;

        case '/json/list':
        case '/json':
            sendJson([
                {
                    "description": "node.js instance",
                    "devtoolsFrontendUrl": "chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/0198dee4-3ed9-4715-854a-d70d333627f6",
                    "faviconUrl": "https://nodejs.org/static/favicon.ico",
                    "id": "0198dee4-3ed9-4715-854a-d70d333627f6",
                    "title": "node[15981]",
                    "type": "node",
                    "url": "file://",
                    "webSocketDebuggerUrl": "ws://127.0.0.1:9229/0198dee4-3ed9-4715-854a-d70d333627f6"
                }
            ], response);
            break;

        default:
            response.writeHead(404, {});
            response.end();
    }
});

wss = new WebSocket.Server({server: server});

wss.on('connection', ws => {
    ws.on('message', message => {
        console.log(`Received message => ${message}`)
    })
})

server.listen(9229, function () {
    console.log((new Date()) + ' Server is listening on port 9229');
});

So can anyone figure out what I am missing??

wOxxOm
  • 65,848
  • 11
  • 132
  • 136
Nauman Umer
  • 1,006
  • 1
  • 11
  • 21

0 Answers0