在websockets上发送对象

时间:2014-03-27 17:30:58

标签: javascript websocket

我定义了一个像这样的对象:

function Receipt (stat, pr) {
    var status = stat,
        price = pr;
    this.somefunction = function (someArgs) {
        // do something
    }            
}

然后我有一个websocket并发送这个对象; websocket连接到服务器,然后服务器将消息中继到所有其他客户端。

var rec = new Receipt('NEW', 10);
socket.send({obj: rec});

问题在于:当我在其他客户端上收到数据时,我收到空对象。有没有办法序列化数据并发送它,以便我可以复制其他客户端上的对象 - 以便对象的定义保持不变?我试过JSON.stringify没有帮助,只是给了我"{}"

1 个答案:

答案 0 :(得分:1)

如果您希望对象保留statpr的初始值,则需要将其存储在this中。

在您提供的代码中,rec的唯一属性是somefunction,它不会被字符串化,因为它是一个函数。

function Receipt (stat, pr) {
    this.status = stat;
    this.price = pr;
    this.somefunction = function (someArgs) {
        // do something
    }
}

var rec = new Receipt('NEW', 10);
JSON.stringify(rec)
// returns "{"status":"NEW","price":10}"