我有一个 Backbone 应用程序,它有一个名为Links
. Links
映射到/api/links
.
API 将为用户提供最新的链接。但是,我有一个系统,当用户点击这个 API 时,它将向消息队列添加一个作业,请求更新数据库中的链接。
当这项工作完成后,我会将新链接推送到 Backbone 集合。
我该怎么做?在我看来,我有两个选择:
- 从 Backbone 集合中,长轮询 API 以获取新链接
- 设置 WebSockets 以在作业完成时向集合发送“消息”,并与它一起发送新数据
- 为我的应用程序废弃 REST API,只为所有事情使用 WebSocket,因为我以后可能会有更多的实时需求
带有 REST API 的 WebSocket
如果我使用 WebSockets,我不确定将它集成到我的 Backbone 集合中以便它与 REST API 一起工作的最佳方式。
目前我的 Backbone 集合看起来像这样:
var Links = Backbone.Collection.extend({
url: '/api/links'
});
我不确定如何启用 Backbone 集合来处理 AJAX和WebSocket。我是否继续使用默认的 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
};
})
问题
我应该如何根据上述选项或您的任何其他想法来实现我的实时需求?请提供代码示例以提供一些上下文。