0

我读到 nowjs 支持传递对象以及字符串,但由于某种原因,我遇到了问题。这是他们网页中的 nowjs 示例,只有一个字符串被解析并且对我来说工作正常,

客户端

  now.test('foo', function(msg){
       console.log(msg);
  });

服务器端

everyone.now.test = function(val, callback){
  callback(val + ' bar!');
}

下面的代码我尝试传递并反对 val ,

客户端

now.test('default', function(msg){
       console.log(Object.keys(msg));
       console.log(msg.GetEthernet());
  });

服务器端

everyone.now.test = function(val, callback){
    var profile = honeydConfig.GetProfile(val);
    console.log("Got eth " + profile.GetEthernet() + " for profile " + profileName);
    callback(profile);
}

在服务器端,它打印 GetEthernet 函数的正确输出。在客户端,它只是说,“未捕获的 TypeError:Object # has no method 'GetEthernet'”并为 Object.keys 返回一个空数组。

4

1 回答 1

2

我没有使用 nowjs,但如果它可以在服务器和客户端之间发送完整的 JavaScript 对象,我会感到非常惊讶——即具有原型链和方法的对象。无论您使用什么框架,客户端和服务器之间传递的对象都需要序列化为字符串;对于 JavaScript,这通常意味着 JSON 序列化。如果 nowjs 文档说你可以传递一个对象,他们可能是指一个普通的 JavaScript 对象,一个 JSON 可序列化的对象。否则,您必须序列化对象方法并将它们发送给客户端重新解释,除了最琐碎的方法之外,这对所有方法都没有任何意义。

长话短说,尝试传递 的输出profile.GetEthernet(),而不是传递profile和调用方法。如果您需要传递更多关于 的数据profile,您可以创建一个具有各种方法输出的对象并将其发送。

于 2012-04-26T01:30:29.223 回答