我有一个Backbone应用程序,它有一个名为Links的集合.链接映射到/ api / links的REST API URI.
API将为用户提供最新的链接.但是,我有一个系统,当用户点击此API时,会向消息队列添加一个作业,请求更新数据库中的链接.
完成此工作后,我会将新链接推送到Backbone集合.
我该怎么做?在我看来,我有两个选择:
>从Backbone集合中,长时间轮询API以获取新链接
>设置WebSockets以在作业完成时向集合发送“消息”,并使用它发送新数据
>为我的应用程序废弃REST API,只使用WebSockets来处理所有事情,因为我可能会在以后有更多的实时需求
带有REST API的WebSockets
如果我使用WebSockets,我不确定将其集成到我的Backbone集合中的最佳方法,以便它与REST API一起工作.
目前我的Backbone集合看起来像这样:
var Links = Backbone.Collection.extend({ url: '/api/links' });
我不确定如何启用Backbone集合来处理AJAX和WebSockets.我是否继续使用默认的Backbone.sync进行CRUD Ajax操作,然后手动处理单个WebSocket连接?在我脑海里:
var Links = Backbone.Collection.extend({ url: '/api/links',initialize: function () { var socket = io.connect('http://localhost'); socket.on('newLinks',addLinks) },addLinks: function (data) { // Prepend `data` to the collection }; })
问题
我应该如何实现我的实时需求,从上面的选项或你有任何其他想法?请提供代码示例以提供一些上下文.
别担心!
Backbone.WS让你满意.
原文链接:https://www.f2er.com/ajax/159996.html您可以初始化WebSocket连接,如:
var ws = new Bakcbone.WS('ws://exmaple.com/');
并将模型绑定到它:
var model = new Backbone.Model(); ws.bind(model);
然后,此模型将使用ws:消息类型侦听消息事件,您可以调用model.send(data)通过该连接发送数据.
当然,收藏也是如此.
Backbone.WS还提供了一些工具,用于将类似自定义REST的API映射到模型/集合.