前端的监听器听后端听众

时间:2018-01-27 15:57:17

标签: javascript node.js javascript-events listener

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

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

1 个答案:

答案 0 :(得分:1)

因此,您正在寻找的是从服务器向客户端发送或“推送”数据的能力。这样做的典型方法是使用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连接将自动断开连接。
  8. socket.io documentation为客户端和服务器提供了几段示例代码,以向您展示如何编程。