如何在主干中侦听 HTTP 事件

How to listen for HTTP events in backbone

本文关键字:HTTP 事件      更新时间:2023-09-26

一个完整的骨干菜鸟问题。

我想知道,有没有办法在骨干网中监听HTTP-POST事件?

比方说,当 API 用户使用命令行中的wget执行POST请求时,我想更新我的视图。我查看了 API 文档,并尝试了request选项,但没有运气。基本上在我看来,我正在尝试这样的事情:

this.listenTo(this.collection, 'request', this.render);

PS:我的代码中有this.render的函数定义

我只是要扩展@Yaroslav的答案。他的回答是完全正确的;你不能明确地做你想做的事。您的工作流程必须如下所示:

  1. 客户端从 Web 应用外部执行一些操作(例如命令行 POST)
  2. 您的服务器会执行它被要求执行的任何操作,但随后会通知客户端。
  3. 您的主干视图接受通知并重新呈现(使用 this.render)

就您的服务器推送技术而言,您有几种不同的选择。

  1. 轮询与 AJAX
  2. 带 AJAX 的长轮询
  3. 网络套接字
  4. 服务器发送的事件

所有这些都在本博客文章中有所涉及和解释。

简要总结:

投票

轮询是指 Web 应用按给定间隔向服务器请求新信息。也就是说,每隔 10 秒,您的 Backbone 应用程序就会询问是否发生了任何新情况。这可能会提供间隔时间的最大延迟,并可能导致大量不必要的请求

长轮询

您的客户端始终维护对服务器的打开请求,该请求在发生某些事情之前不会返回。此时,客户端可以对新信息执行操作,然后发出新请求,该请求再次保持打开状态,直到获得新信息。

网络套接字

Websocket 是一种双向传输机制,支持服务器>客户端和客户端>服务器消息。

服务器发送事件

服务器发送的事件是单向传输,是 HTML5 规范的一部分。它们允许服务器>客户端消息。

一个客户端无法侦听另一个客户端的事件,除非服务器使用某种服务器推送技术明确通知客户端。

您的客户端应该侦听推送服务(WebSocket、长轮询 AJAX 等),因此如果服务器上发生某些事件,服务器将通知客户端。

考虑使用SockJS或 Socket.IO 来实现自己的功能,或者在云中提供用于这些目的的API的一些推送服务,例如Pusher。