2012-05-07 51 views
2

當我需要拆分數據時,我必須將其轉換爲字符串。
這裏是我的數據處理功能:NodeJS套接字數據拆分

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; 
    } 

    }); 

當我發送數據,如「SETUSER |名稱」,然後「joinChannel |主」從AS3客戶端。 NodeJS將其作爲一個數據包讀取。
我的問題是如何使這兩個不同的數據包?

+0

什麼字符分隔兩件?一條新線?你無法控制數據包本身。 – loganfsmyth

+0

是的,這是新行 – Gugis

+0

AS3代碼:\t server.send(「setUser |」+ name_txt.text)+「\ n」; \t server.send(「joinChannel | aha」)+「\ n」; – Gugis

回答

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; 
    } 
    }); 
});