我使用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]」位於括號「[」和「]」中。但是,有和沒有這些括號 - 同樣的問題....
感謝您的幫助
我不認爲問題在發出。你試着發送一個簡單的數組,而不是緩衝區? –