Buchse Auflegen bei Verwendung von https.Anfrage in node.js
Bei Verwendung von https.Anfrage mit node.js v04.7, bekomme ich die folgende Fehlermeldung:
Error: socket hang up
at CleartextStream.<anonymous> (http.js:1272:45)
at CleartextStream.emit (events.js:61:17)
at Array.<anonymous> (tls.js:617:22)
at EventEmitter._tickCallback (node.js:126:26)
Vereinfachte code, der den Fehler generiert:
var https = require('https')
, fs = require('fs')
var options = {
host: 'localhost'
, port: 8000
, key: fs.readFileSync('../../test-key.pem')
, cert: fs.readFileSync('../../test-cert.pem')
}
//Set up server and start listening
https.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'})
res.end('success')
}).listen(options.port, options.host)
//Wait a second to let the server start up
setTimeout(function() {
var clientRequest = https.request(options, function(res) {
res.on('data', function (chunk) {
console.log('Called')
})
})
clientRequest.write('')
clientRequest.end()
}, 1000)
Bekomme ich den Fehler auch mit server und client laufen auf verschiedenen Knoten-Instanzen und haben getestet, mit port 8000, 3000 und 443 und ohne SSL-Zertifikate. Ich habe libssl und libssl-dev auf meinem Ubuntu-Rechner.
Irgendwelche Ideen auf, was könnte die Ursache sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
https.createServer(function (req, res) {
fehlen dir die Optionen beim erstellen der server sollte sein:
https.createServer(options, function (req, res) {
mit deinem key und cert innerhalb
Ich hatte ein sehr ähnliches problem, wo die Antwort Ende-Ereignis nie ausgelöst wird.
Hinzufügen dieser Zeile das problem behoben:
Fand ich ein Beispiel dafür in der Anfrage Bibliothek erwähnt, in der vorherigen Antwort.
Kurze Antwort: Verwenden Sie die neuesten source code statt die, die Sie haben. Speichern Sie es, wo Sie, und dann verlangen Sie, Sie sind gut zu gehen.
In der Anfrage 1.2.0-source-code, main.js line 76, sehe ich
Blick auf die http.js source code, ich sehe
Ist es anfordern mit 3 params aber die eigentliche Funktion hat nur 2. Die Funktionalität wird durch ein separates Modul für https.
Blick auf die neuesten main.js source code, sehe ich dramatische Veränderungen. Das wichtigste ist,der Zusatz von
require('https')
.Scheint es, dass die Anfrage wurde behoben, aber nie wieder veröffentlicht. Glücklicherweise ist der fix scheint zu funktionieren, wenn Sie kopieren Sie einfach manuell aus die raw-Ansicht der neuesten main.js source code und verwenden Sie es anstelle.
Ich hatte ein ähnliches problem, und ich glaube, ich habe ein Update. aber dann habe ich noch eine socket-problem.
Siehe meine Lösung hier: http://groups.google.com/group/nodejs/browse_thread/thread/9189df2597aa199e/b83b16c08a051706?lnk=gst&q=hang+up#b83b16c08a051706
wichtiger Punkt: verwenden Sie 0.4.8, http.Anfrage anstelle von http.createClient.
Aber das neue problem ist, wenn ich lassen Sie das Programm laufen für lange Zeit, (die ich eigentlich Links das Programm läuft, aber keine Tätigkeit am Wochenende), dann bekomme ich socket hang up Fehlermeldung, wenn ich eine Anfrage zu senden zu http-Server. (noch nicht einmal die http.Anfrage). Ich weiß nicht, ob es ist, weil mein code, oder es ist anderes problem mit http-Server