node.js / data.socket上的获取缓冲区

时间:2013-06-14 11:22:32

标签: node.js

我使用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..>

即使我在localhost中打开一个连接。可能是什么原因?我怎么改变它会得到http请求?

1 个答案:

答案 0 :(得分:8)

根据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());
  }
}