数组在node.js上作为string发送

我正在做一些socket.io的实验。 我有一个canvas,成功地发送数据到服务器收到罚款。

它收到一个正确的Uint8ClampedArray,因为这是正在发送的内容。

当我然后发送这个消息从服务器到客户端,我得到一个string:[对象对象]。 我再次检查! 我错过了什么,服务器的代码如下:

var fs, http, io, server; fs = require('fs'); http = require('http'); server = http.createServer(function(req, res) { return fs.readFile("" + __dirname + "/front.html", function(err, data) { res.writeHead(200, { 'Content-Type': 'text/html' }); return res.end(data, 'utf8'); }); }); server.listen(1337); io = require('socket.io').listen(server); io.sockets.on('connection', function(socket) { socket.on('publish', function(message) { return io.sockets.send(message); }); }); 

在客户端:

 var dataStr = JSON.stringify(data); // converts object to string 

在服务器上:

 var dataObj = JSON.parse(data); // converts string to object 

唯一的方法是重用客户端大小的Uint8ClampedArray 。 如果你在服务器端有这个

 var x = new Uint8ClampedArray(3); x[0] = -17; x[1] = 93; x[2] = 350; var dataThatWillBeSent = JSON.stringify(x); // '{"0":0,"1":93,"2":255,"length":3,"byteLength":3,"byteOffset":0,"buffer":{"byteLength":3}}' 

在你的客户端,假设你已经包含了Uint8ClampedArray ,你可以这样做

 var dataReceived = '{"0":0,"1":93,"2":255,"length":3,"byteLength":3,"byteOffset":0,"buffer":{"byteLength":3}}'; dataReceived = JSON.parse(dataReceived); // reconstruct Uint8ClampedArray object 

我之前没有使用Uint8ClampedArray ,所以我不知道如何从JSON数据中恢复Uint8ClampedArray对象,但是如果你阅读了这个文档,你可能会找出一些东西