api – Backbone.sync – 使用ajax和Socket.IO/WebSockets的集合

前端之家收集整理的这篇文章主要介绍了api – Backbone.sync – 使用ajax和Socket.IO/WebSockets的集合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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让你满意.

您可以初始化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映射到模型/集合.

原文链接:https://www.f2er.com/ajax/159996.html

猜你在找的Ajax相关文章