我正在尝试使用socket.io。我有一个成功将数据发送到服务器的画布,接收它很好。
它收到一个正确的Uint8ClampedArray,因为这就是发送的内容。
当我然后从服务器向客户端发送此消息时,我得到一个字符串:[object Object]。我再次检查了! 我错过了什么,服务器的代码如下:
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);
});
});
答案 0 :(得分:9)
在客户端:
var dataStr = JSON.stringify(data); // converts object to string
在服务器上:
var dataObj = JSON.parse(data); // converts string to object
答案 1 :(得分:2)
唯一的方法是在您的客户端大小中重用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
对象,但如果你阅读文档,你可能会想出一些东西< / p>