Me gustaría tener un par de cliente y servidor Javascript que se comuniquen usando JSON sin involucrar un navegador web. Puedo hacerlo funcionar siempre que el cliente no intente enviar nada al servidor. Cuando lo hace, aparece el mensaje de error (% node poster.js):
.../node_modules/xhr2/lib/xhr2.js:281 throw new NetworkError(`Unsupported protocol ${this._url.protocol}`);Alguien me puede ayudar con este problema de protocolo por favor. Lo que tengo hasta ahora: un servidor que puedo iniciar con "pm2 start jsonServer.js" -
var port = 62022 var http = require('http') var srvr = http.createServer (function (req, res) { console.log ('Request type: ' + typeof(req)) console.log (req) res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World!\n'); res.write(req); res.end(); }) var scriptName = __filename.split(__dirname+"/").pop(); console.log ('Script: ' + scriptName +'. Listening to port ' + port) srvr.listen(port)... y un cliente que es
var XMLHttpRequest = require('xhr2') var serialize = function(object) { return JSON.stringify(object, null, 2) } let xhr = new XMLHttpRequest(); xhr.open("POST", "localhost:62022"); xhr.setRequestHeader("Accept", "application/json"); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onload = () => console.log(xhr.responseText); let data = `{ "Id": 912, "First Name": "Archibald", "Last Name": "Haddock" }`; //console.log (serialize(data)); //xhr.send(serialize(data)); console.log (data); xhr.send(data);Esto es lo que se necesita después de publicar '¡Hola mundo!' en el servidor (res.end no espera la transferencia de datos asíncrona):
let data = ''; req.on('data', chunk => { data += chunk; }); req.on('end', () => { // do whatever with data res.write ('Data: ' + data + '\n') res.end() });