当我需要分割数据时,我必须将其转换为字符串 这是我的数据处理函数:
socket.on('data', function (data) {
var str = data.toString().split("|");
switch(str[0]){
case "setUser":
setUser(str[1], socket);
break;
case "joinChannel":
joinChannel(str[1], socket);
break;
}
});
当我从AS3客户端发送“setUser | Name”等数据然后“joinChannel | main”时。 NodeJS将其读作一个数据包 我的问题是如何将其作为两个不同的数据包?
答案 0 :(得分:2)
通常,您会将所有数据缓冲在一起,然后将其解析为一个字符串。或者如果你需要在它进入时分配它,那么你将在data
回调中进行拆分并跟踪任何剩余的部分命令以预先接收到的网络块。
var data = '';
socket.setEncoding('utf8');
socket.on('data', function(chunk) {
data += chunk;
});
socket.on('end', function() {
var lines = data.split('\n');
lines.forEach(function(line) {
var parts = line.split('|');
switch (parts[0]) {
case 'setUser':
setUser(str[1], socket);
break;
case 'joinChannel':
joinChannel(str[1], socket);
break;
}
});
});