我使用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请求?
答案 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());
}
}