如何从代码中删除换行符?
socket.on('data', function(data){
console.log('Data in server, sending to handle()');
worker.handle(data, socket);
});
Worker.handle():
exports.handle = function handle(command, socket) {
console.log('Data sent to handle()');
command = command.toString();
console.log(命令);
编辑:
我得到这个输出:
test data
[newline]
编辑2:
这是持续代码:
if (command === 'look') {
//stuff
}
if (command === 'login') {
//stuff
这不是显示/演示问题。这是一个与数据传输协议有关的问题。Socket是一个面向流的协议,这意味着它不是基于消息的。同时,你使用它就像它是基于消息的一样——你可以这样做,但你需要为发送者和接收者定义一个协议,以识别每条消息的开始和结束。
话虽如此,根据您的要求,我假设您已经决定使用换行符(或换行符的变体)作为消息结束标记。为了使其正常工作,您需要在传入数据中积极查找换行符,这样您就可以识别每条消息的末尾,并在处理之前将其剥离。
下面的代码应该替换socket.on方法以获得所需的结果。
// define your terminator for easy reference, changes
var msgTerminator = 'n';
// create a place to accumulate your messages even if they come in pieces
var buf;
socket.on('data', function(data){
// add new data to your buffer
buf += data;
// see if there is one or more complete messages
if (buf.indexOf(msgTerminator) >= 0) {
// slice up the buffer into messages
var msgs = buf.split(msgTerminator);
for (var i = 0; i < msgs.length - 2; ++i) {
// walk through each message in order
var msg = msgs[i];
// pick off the current message
console.log('Data in server, sending to handle()');
// send only the current message to your handler
worker.handle(msg, socket);
}
buf = msgs[msgs.length - 1]; // put back any partial message into your buffer
}
});