Node.js TCP服务器,用于评估和打印数据

Node.js TCP server that eval and print data

本文关键字:评估 打印 数据 用于 js TCP 服务器 Node      更新时间:2023-09-26

我试图创建一个简单的TCP服务器来评估并打印结果,但没有成功,这是我的代码:

var net = require('net');
var server = net.createServer(function(socket) {
    socket.on('data', function(data) {
        socket.write('result: ');
        socket.end(eval(data));
    });
});
server.listen(8080);

当我连接到8080端口时,我得到了这个:

$ echo 10+10 | nc localhost 8080
result: 10+10

为什么eval不起作用?

默认情况下,流在数据事件中接收一个Buffer对象。

来自MDN:

如果eval()的参数不是字符串,则eval(

由于eval对对象无效,write()按原样发送数据。必须将套接字的编码显式设置为utf8,才能将数据转换为字符串。

var server = net.createServer(function(socket) {
    socket.setEncoding('utf8');
    socket.on('data', function(data) {
        socket.write('result: ');
        var evaluatedData = eval(data);
        socket.end(evaluatedData.toString());
    });
});

toString()是必需的,因为socket.write,实际上是Writable.write,接受stringBuffer