与nodejs进行数据和string比较

我是一个node.js的初学者,我愿意创build一个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来查看我的代码是否正常工作。 基本上我想要服务器回答“打开”,如果我发送他“打开”,“添加”,如果我发送“添加”…我不知道为什么,但它不会工作。 我已经尝试了一个小时了,我敢肯定,这一定是我做的一些简单的错误,但现在我看不到任何会导致这个简单的回声服务器不能正常工作的东西。

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

要正确地捕捉所有的情况(而不只是特定于这种情况的怪癖),你应该只使用trim()方法

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

你的代码是好的 。 当您使用telnet时,您通过按ENTER键发送短信。 服务器收到的文本以'\r\n'结尾。 所以你应该比较两个string:

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