我正在使用带有socket.io(版本1.7.3)的Node.js(版本7.9.0)并尝试将数组“softwareBez”和“softwareVersion”从服务器发送到客户端。比客户端应该将数组的内容输出为文本。
这是我的代码:
---服务器端---
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))
);
Webbrowser的输出是:
Softwarebezeichnung: [object ArrayBuffer]
Softwareversion [object ArrayBuffer]
因此,数组的传输似乎出了问题?在这里,我发现了一些我认为是解决方案的内容:Are arrays allowed in the socket.io emit function? 因此,emit函数(服务器端)中的“softwareBez:[softwareBez]”和“softwareVersion:[softwareVersion]”在括号“[”和“]”中。但有和没有这些括号 - 同样的问题....
感谢您的帮助
答案 0 :(得分: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]
还有一个问题:数组中有十进制数字。是否有简单的可能性将这些dec数字转换为ASCII-Table上的文本?任何给定的功能左右?