node.js - 通过 Socket.io 发出 Backbone.js 模型

标签 node.js backbone.js socket.io

基本问题
我试图通过 socket.emit() 发送一个对象,但该对象未完全发送。我可能只是误解了如何执行此操作,但这是示例:

console.log(object)

结果

{ length: 8,
  models:
   [ { attributes: [Object],
       _escapedAttributes: {},
       cid: 'c1',
       changed: {},
       _silent: {},
       _pending: {},
       _previousAttributes: [Object],
       lots: [Object],
       _changing: false,
       collection: [Circular],
       _callbacks: [Object] },
    ... ETC

同时

socket.emit(e,object);

结果:

{"name":"read:AllAuctions","args":
[[{"auctionId":"298"},{"auctionId":"381"},{"auctionId":"385"},
{"auctionId":"393"},{"auctionId":"394"},{"auctionId":"395"},
{"auctionId":"402"},{"auctionId":"800"}]]}

它以后一种格式到达前端。

更多细节
我创建了一个服务器,尝试使用 socket.io 更新客户端主干模型。其中一些使用此处指定的想法:

http://developer.teradata.com/blog/jasonstrimpel/2011/11/backbone-js-and-socket-io

不同之处在于我在后端创建了 Backbone 模型。我的逻辑是共享基本模型文件,并让后端处理与持久层的通信并保持“真实”数据源的优化,然后响应请求以获取这些模型/集合以及自动推送更新。

一切似乎都正常,除了我应该将模型传输到前端。我是否需要扩展/覆盖 toJSON 或其他实际将其转换为传输的方法?如果是这样,我该怎么做?您能给我的任何帮助将不胜感激!

最佳答案

我认为您应该只发送数据并在客户端重新创建对象。

因此您可以尝试使用 Backbone Collection 的 toJSON

socket.emit(e, object.toJSON());

关于node.js - 通过 Socket.io 发出 Backbone.js 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130933/

相关文章:

node.js - 使用 NCONF 捕获命令行参数

javascript - 我们如何在脚本标签中正确使用 polymer 属性?

node.js - 使用 Socket.io 0.7 的 Webkit 中的 Websocket 握手失败

node.js - 手动更改路由后 mediator.user 丢失

javascript - Backbone 中的路由器分离

node.js - 最大限度减少实时连接延迟的技术

node.js - Node JS有类似python的apply like功能吗

javascript - express.js 全局 try/catch

node.js - 如何跟踪所有 rest api 的请求数

javascript - Backbone.js 我如何根据特定的应用程序状态定义一组自定义路由