1

我正在用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);
    });
});
4

2 回答 2

9

在客户端:

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

在服务器上:

var dataObj = JSON.parse(data); // converts string to object
于 2013-05-13T07:14:38.817 回答
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,所以我不知道如何Uint8ClampedArray从 JSON 数据中恢复对象,但如果你阅读文档,你可能会弄清楚一些事情

于 2013-05-15T06:53:46.537 回答