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:
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:
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');