与nodejs的数据和字符串比较

时间:2014-03-05 01:04:16

标签: javascript node.js events

我是node.js的初学者,我愿意创建一个TCP服务器,根据收到的内容给我不同的答案。

这是服务器端:

var net = require('net');

var server = net.createServer(function(c) {
    console.log('socket opened');
    c.setEncoding('utf8');
    c.on('end', function() {
        console.log('connection/socket closed');
    });
    c.on('data', function(data) {
        console.log('Data:'+data);
        if(data.toString() == "open"){
            c.write('Answer: opened');
        }else if(data.toString() === "add"){
            c.write('Answer: added');
        }else if(data.toString() === "process"){
             c.write('Answer: processed');
        }
    });
});

server.listen(8080, function() { // start server (port 8080)
    console.log('server started');
});

我只是使用telnet来尝试查看我的代码是否正常工作。 基本上我希望服务器回答'打开'如果我发送'打开','添加'如果我发送'添加'... 我不知道为什么,但它不会工作。 我已经尝试了一个小时了,我确信这一定是我犯的一些简单的错误,但现在我看不到任何会导致这个简单的echo服务器无法正常工作的事情。

3 个答案:

答案 0 :(得分:17)

我后来知道了,但有一个更好的答案,我发现这个谷歌搜索类似的问题。所以这是我的2美分。

要正确捕捉所有案例(而不仅仅是针对此案例的特定怪癖),您应该只使用trim()方法

if (data.toString().trim() === 'open') {
    //...
}

答案 1 :(得分:1)

您的代码确定。使用telnet时,按ENTER键发送短信。服务器收到的文本以'\r\n'结尾。所以你应该像这样比较两个字符串:

if (data.toString() === 'open\r\n') {
  //...
}

答案 2 :(得分:0)

html(javascript)中的字符串比较和响应

var diff_match_patch = require('googlediff');
var dmp = new diff_match_patch();

function compareString(){
    var leftHandSideObject = JSON.stringify(req.body[0]);
    var rightHandSideObject = JSON.stringify(req.body[1]);
    var ms_start = (new Date()).getTime();
    var d = dmp.diff_main(leftHandSideObject, rightHandSideObject);
    var ms_end = (new Date()).getTime();
    if (true) {
        dmp.diff_cleanupSemantic(d);
    }
    res.status(200).json(ds);
}