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はそれを1つのデータパケットとして読み取ります。
私の質問は、それを2つの異なるデータパケットとして作成する方法です。

4

1 に答える 1

3

通常は、すべてのデータをまとめてバッファリングしてから、1つの文字列として解析します。または、入ってくるときにそれを分割する必要がある場合は、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 に答える