2017-04-25 94 views
1

我使用Node.js(版本7.9.0)與socket.io(版本1.7.3)並嘗試發送數組「 softwareBez「和」softwareVersion「從服務器到客戶端。比客戶端應該輸出數組的內容作爲文本。Node.js和Socket.io - 如何使用emit函數發送數組

這裏是我的代碼:

---服務器端---

var softwareBez = new Buffer(recTelegramm[2]);    // Create array with the length recTelegramm[2] 
var softwareVersion = new Buffer(recTelegramm[3]);   // Create array with the length recTelegramm[3] 

// Fill the array softwareBez 
for(var i=0; i<recTelegramm[2]; i++) 
{ 
    softwareBez[i] = recTelegramm[9+i];      
} 
// 

// Fill the array softwareVersion 
for(var i=0; i<recTelegramm[3]; i++) 
{ 
    softwareVersion[i] = recTelegramm[9+recTelegramm[2]+i]; 
} 
// 


    // Output for Tests 
    console.log("softwareBez: ", softwareBez , "\n"); 
    console.log("softwareVersion: ", softwareVersion , "\n"); 

    // Send Data to Client 
    io.sockets.emit('P_Sysinfo', {softwareBez: [softwareBez], softwareVersion: [softwareVersion]}); 

過的console.log顯示輸出,該陣列填充正確。

---客戶端---

$('#content').append 
     (
      $('<li></li>').append($('<span>').text('Softwarebezeichnung: ' + data.softwareBez)), 
      $('<li></li>').append($('<span>').text('Softwareversion: ' + data.softwareVersion)) 
     ); 

而在web瀏覽器的輸出是:

Softwarebezeichnung: [object ArrayBuffer] 
Softwareversion [object ArrayBuffer] 

所以有些事情似乎出差錯陣列的發射?在這裏,我發現了一些我認爲是解決方案的東西:Are arrays allowed in the socket.io emit function? 因此,emit函數(服務器端)中的「softwareBez:[softwareBez]」和「softwareVersion:[softwareVersion]」位於括號「[」和「]」中。但是,有和沒有這些括號 - 同樣的問題....

感謝您的幫助

+1

我不認爲問題在發出。你試着發送一個簡單的數組,而不是緩衝區? –

回答

0

非常感謝,這是問題....

與服務器端以下它的工作原理:

var softwareBez = new Buffer(recTelegramm[2]);    // Create array with the length recTelegramm[2] 
var softwareVersion = new Buffer(recTelegramm[3]);   // Create array with the length recTelegramm[3] 

還有一個問題:數組中有十個數字。是否有簡單的可能性將這些十進制數字轉換爲ASCII表格中的文本?任何給定的功能左右?