如何在节点中跟踪和处理事件

时间:2015-05-09 04:02:07

标签: node.js events event-handling

  • 所以我想说我想制作一个Twitter机器人。我想向发送回复的人发送一条消息,所以我需要为它做一个事件。显然,一种方法是在某个时间间隔内获得所有回复(或最后n个回复),找出哪些是新的,等等;但首先它不是实时的,它需要额外的查询才能找到新的推文。

  • 假设我们要跟踪网站中的某些更改。例如,我们希望在发生变化时立即处理事件。

我使用socket.io来处理其他类型的事件,例如在特定端口发生某些更改时,但我无法弄清楚如何处理这些类型的事件。

1 个答案:

答案 0 :(得分:0)

“事件”一词并不代表您认为的含义!

  • 在DOM环境中,an Event是一个非常具体(和核心)的概念,它允许您根据用户与屏幕上元素的交互来编写代码。
  • 在NodeJS中,an Event可由events.EventEmitter
  • 的实例生成并公布
  • 在你的问题中,一个事件似乎指的是互联网上发生的任何事情,可能是任何地方。

根据最后的定义,对于如何“追踪事件”,根本没有单一的答案。

如果您想编写可以响应更改的代码(这只是“对输入作出反应”的更具体版本),您需要创建一种机制来识别发生了更改,然后是触发机制你希望在响应中运行什么代码(最后一部分是你通常称之为“发出”一个“事件”)。

SocketIO在某些情况下使用优雅的协议降级来完成这两件事,以便显式地发出您可以监听和处理的本地事件。它开始尝试使用WebSockets,最终又回归到更为昂贵的技术,例如polling

仅当信息源或更改决定支持该协议时,SocketIO才有效。在这些情况下,源实际上是发出事件(通过websockets),socketIO监听它。

如果您要查找的信息来源不支持websockets(并且尚未编码以明确通知您的服务器更改),您将不得不提出自己的解决方案。但是:您不应该将此视为跟踪“事件”的情况。相反,您正在关注更改。

您如何观察变化将取决于变更的性质。通常你会probably have to poll为它。