Processus enfant écrivant dans socket – localhost a envoyé une réponse invalide

J’ai ceci dans un processus parent:

import cp = require('child_process'); const k = cp.fork(file); app.use(function(req,res,next){ k.send('handle', req.socket); }; 

et puis j’ai ceci dans le processus enfant:

 process.on('message', function (m, socket) { if (m === 'handle' && socket) { socket.end('foobar!!!'); } else{ console.log('nope'); } }); 

Après avoir effectué quelques opérations de journalisation, je connais socket.end('foobar!!!'); se fait appeler. Mais je vois cette erreur dans le navigateur:

entrez la description de l'image ici

Quelqu’un sait comment je peux envoyer une réponse valide avec juste une simple prise à ma disposition?

Je suppose que je dois apprendre à écrire une réponse HTTP valide, jamais essayé auparavant.

Quand tu fais ça:

 socket.end('foobar!!!'); 

Vous envoyez juste foobar!!! Et ce n’est pas une réponse http valide, c’est exactement ce que votre message d’erreur client vous dit.

Comme vous avez transmis ce socket à un autre processus et qu’express n’a encore rien écrit sur ce socket dans le processus d’origine, vous devez envoyer ici une réponse http valide dans son intégralité.

Une réponse http ressemble à ceci:

entrez la description de l'image ici

Crédit à cet article pour l’image.

Ainsi, une réponse http très simple pourrait ressembler à ceci:

 socket.end('HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\nHello');