2017-04-25 96 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表格中的文本?任何给定的功能左右?