首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建用户可以订阅侦听事件的节点js?

问如何创建用户可以订阅侦听事件的节点js?
EN

Stack Overflow用户
提问于 2019-09-10 04:01:19
回答 1查看 88关注 0票数 0

我正在尝试创建和node.js api,用户可以订阅获得事件通知?

我创建了下面的API并能够使用python调用API,但是我不清楚人们如何订阅它?

人们如何订阅此API以获得发布的新根构建通知?我需要更改什么?

node.js API

代码语言:javascript
复制
app.get("/api/root_event_notification", (req, res, next) => {
  console.log(req.query.params)
  var events = require('events');
  var eventEmitter = new events.EventEmitter();

  //Create an event handler:
  var myEventHandler = function () {
    console.log('new_root_announced!');
    res.status(200).json({
          message: "New root build released!",
          posts: req.query.params
        });
  }


import requests

python调用

代码语言:javascript
复制
input_json = {'BATS':'678910','root_version':'12A12'}
url = 'http://localhost:3000/api/root_event_notification?params=%s'%input_json
response = requests.get(url)
print response.text

产出:-

代码语言:javascript
复制
{"message":"New root build released!","posts":"{'root_version': '12A12', 'BATS': '678910'}"}
EN

回答 1

Stack Overflow用户

发布于 2019-09-10 04:29:08

您不能将发送http响应的时间推迟到任意的时间。客户机和服务器(有时还包括主机提供商的基础设施)都会在几分钟后超时http请求。有各种各样的技巧试图保持http连接的活力,但所有这些都有局限性。

使用web技术,获取客户端更新服务器数据的常用选项如下:

  1. http轮询(客户端定期轮询服务器)。还有一个很长的轮询适应版本,试图提高一些效率。
  2. Websocket.客户端将websocket连接到服务器,这是一个持久的持久连接。然后,客户端或服务器可以在任何时候发送此连接的数据/事件,从而允许服务器在任何时候有效地向客户端发送通知。
  3. 服务器发送事件()这是一种较新的http技术,允许使用一些修改的http技术从服务器到客户端进行单向通知。

由于防火墙和公共IP地址问题,服务器通常无法直接连接到客户端,因此服务器通知客户端的通常机制是使用从客户端到服务器的持久webSocket连接,然后任何一方都可以通过该连接发送webSocket数据包,或者使用更新的SSE (服务器发送事件)允许通过持久的连接将一些服务器事件发送给客户端。

客户端也可以反复“轮询”服务器,但这实际上不是一个事件通知系统(而不是特别高效或及时),而不是客户机可以检查的某种状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57863883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档