6

我使用 node.js,并有下一个代码:

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请求?

4

1 回答 1

10

根据文档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());
  }
}
于 2013-06-14T11:30:12.513 回答