前端监听器监听后端监听器

dan*_*elo 2 javascript listener node.js dom-events

我一直在寻找有关此问题的答案,但找不到任何好的答案。我在 NodeJS 中构建了一个关于 cloudant 的监听器。因此,当 cloudant 更新时,我的代码中的一个函数会被调用。我的问题是这些数据应该作为前端应用程序中的实时数据提供。如果我将侦听器放在 API 端点/中间件中,它不会被调用,除非它收到来自前端的请求,我猜?

所以我的问题是:如何在后端创建一个侦听器,它可以在 Cloudant 发生变化时将数据发送到前端?基本上我想要一个前端的监听器来监听后端的一个监听器。

jfr*_*d00 5

因此,您正在寻找的是从服务器向客户端发送或“推送”数据的能力。这样做的典型方法是使用 webSocket 或 socket.io 连接。客户端连接到服务器并创建到服务器的持久连接。从那时起,服务器可以随时通过该连接向客户端发送数据。然后客户端在该连接上创建一个侦听器,以便它知道何时有传入数据,然后它可以根据数据采取相应的行动。

webSocket 是支持此类功能的标准内置浏览器。socket.io 是一个额外的客户端和服务器层,构建在 webSocket 连接之上,它添加了许多有用的功能,例如连接断开时自动重新连接,JSON 消息定义层,因此您不必定义自己的数据格式等...

这是通常的工作方式:

  1. 当服务器初始化时,它会为传入的 socket.io 连接创建一个 socket.io 侦听器。webSocket/socket.io 旨在“共享”您用于加载网页的同一 Web 服务器,因此您不需要额外的服务器或端口。
  2. 当一个页面在浏览器中加载时,该页面中的一些 Javascript 会创建一个到服务器的 socket.io 连接。
  3. 然后,客户端为它希望能够处理的任何消息设置侦听器。
  4. 同时,当服务器收到它想要发送给客户端的数据时,它可以将该数据发送给所有当前连接的客户端,也可以仅将其发送给一个特定的客户端。
  5. 然后,客户端的事件侦听器将触发并接收数据。
  6. 然后客户端可以决定它想对数据做什么,通常在当前显示的页面中插入一些东西。
  7. 当浏览器切换到另一个网页时,socket.io 连接会自动断开。

socket.io文件有好几件的示例代码客户端和服务器向你展示它是如何编程。