3

当我需要拆分数据时,我必须将其转换为字符串。
这是我的数据处理函数:

  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 将其作为一个数据包读取。
我的问题是如何将其作为两个不同的数据包?

4

1 回答 1

3

通常,您会将所有数据缓冲在一起,然后将其解析为一个字符串。或者,如果您需要在它进入时对其进行拆分,那么您将在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;
    }
  });
});
于 2012-05-07T15:56:50.010 回答