2017-03-13 1 views
-1

웹 소켓, 특히 ZeroMQ를 사용하는 간단한 노드 api/server를 개발 중입니다.RangeError : 유효하지 않은 상태 코드 : 0, NodeJS ZeroMQ

오류 RangeError를 :/요청 데이터를 전송하지만 때, 나는 다음과 같은 오류를받을 잘못된 상태 코드 : ServerResponse.writeHead에서 0
    (_http_server.js : 192 : 11)

var express = require('express'); 
var app = express(); 
var bodyParser = require("body-parser"); 
var server_port = "3000"; 

/** app settings **/ 
var zeromq = require("zeromq"); 
var socket = zeromq.socket("req");/* sends request */ 
var protocol = "tcp://"; 
var ip = "192.000.0.000"; //server 
var socket_port = "9998"; 
var url = protocol + ip + ":" + socket_port; 


app.use(bodyParser()); 

/** paths **/ 
app.post('/request', function (request, response) { 
    var command = request.body; 

    //connect to port 
    socket.connect(url, function (error) { 
     if (error) { 
      console.log("connection error : ", error); 
      process.exit(0); 
     } 
    }); 

    //response to front end 
    socket.send(JSON.stringify(command)); 

    //recieve request 
    socket.on('message', function (message) { 

     //output message to console 
     console.log("Recieved message @ : " + (new Date().toDateString()) + " : " + message.toString()); 

     //send response 
     response.setHeader('Content-Type', 'text/plain'); 
     response.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888'); 
     response.status(200).send(message); 
    }); 

}); 


/** start app **/ 
app.listen(server_port); 

console.log("Server started on port: " + server_port); 

코드를 업데이트 됨 : 이제 수신 중입니다.

오류 : 전송 후 헤더를 설정할 수 없습니다. ServerResponse.OutgoingMessage.setHeader에서 (_http_outgoing.js : 356 : 11)

답변

1

난 당신이

res.status(200).send(<body>); 
+0

안녕 Skabbi를 사용하여 상태 0 시도를 보내는 것으로 추측하고있어, 난 이미 그 해결책을 시도했다 , 그러나 나는 여전히 같은 오류가 발생합니다. 나는 나의 대답을 업데이트했다. – meji

+0

안녕하세요 Skabbi, 나는 그 해결책을 이미 시도했지만, 나는 또한 "setHead", "set"등을 시도했지만, 여전히 같은 오류가 발생합니다. 또한 line19 : 14에서 오류가 발생합니다 ... 여전히 "response.writeHead"... 메서드를 발견하면 오류가 발생합니다. – meji

+1

'writeHead'를 잘못 사용하고 있다고 생각합니다. writeHead의 첫 번째 매개 변수는 상태 코드입니다. 노드 [HTTP API] (https://nodejs.org/api/http.html#http_response_writehead_statuscode_statusmessage_headers)를 보면 대신 'res.setHeader'를 사용해야하는 것 같습니다. – Skabbi

관련 문제