2013-06-14 3 views
3

Я использую Node.js, и имеют следующий код:Node.js/Получение буфера на data.socket

var server = net.createServer(function(socket) { 
socket.on('data', function(d) { 
console.log(d);}} 

Я вижу, что он печатает следующий:

<Buffer 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0..> 

Даже если я откройте коннект в моем локальном хосте. В чем причина? Как я могу изменить его, чтобы получить http-запрос?

+0

Если вы хотите HTTP * запрос *, вы должны использовать [ 'HTTP. createServer'] (http://nodejs.org/api/http.html#http_http_createserver_requestlistener). – robertklep

ответ

6

Согласно docs, вы должны указать кодировку с помощью метода setEncoding() для получения строки.
Если вы этого не сделаете, вы получите буфер с необработанными данными, потому что Node не будет знать, какую кодировку вы хотите - и Node работает с очень низким уровнем сетевого взаимодействия.

Например:

var server = net.createServer(function(socket) { 
    socket.setEncoding("utf8"); 
    socket.on('data', function(d) { 
    console.log(d); // will be string 
    } 
} 

Если вы не хотите, вы всегда можете позвонить toString():

var server = net.createServer(function(socket) { 
    socket.on('data', function(d) { 
    console.log(d.toString()); 
    } 
} 
+4

Или используйте 'd.toString()' в качестве альтернативы. – robertklep

Смежные вопросы