Node.js:通过专有传输协议使用现有库的HTTP / REST请求

特雷弗

给定一个标准的Node.js HTTP库或一个现有的REST客户端库,哪种方法允许这种库通过我自己的协议执行这些HTTP请求是最可行的方法?

换句话说:我的目标是提供一个看起来像HTTP客户端的模块它接受HTTP请求标头,并返回HTTP响应。与标准的节点库HTTP客户端相比,我应该考虑哪些选项来使现有的REST库适合我的“伪” HTTP客户端模块使用?

更多背景信息

我希望创建一个服务器应用程序(基于Node.js),该应用程序向远程嵌入式设备发出HTTP REST请求。但是,由于存在NAT,应用程序服务器无法直接将客户端TCP连接建立到远程设备。因此,为了避开NAT,我将设计自己的专有协议,其中涉及远程设备启动与应用程序服务器的持久连接。然后,一旦建立了持久连接,Node.js应用程序将能够通过该持久连接向网络设备发出HTTP请求。

因此,我的目标是创建一个Node.js模块,该模块充当来自网络设备的传入套接字连接与发出REST请求的主应用程序之间的“桥梁”层。目的是使应用程序发出REST请求,就像向服务器发出HTTP客户端请求一样,而实际上HTTP请求和响应是在专有协议之上传输的。

我目前正在考虑的一个选项是让我的“桥”模块实现一个模仿接口的接口,http.request(options,[callback])并以某种方式强制REST客户端库使用该接口而不是Node HTTP客户端。至少我必须稍微修改我用来实现此目标的任何REST客户端库。

如上所述,我实际上是在尝试使用中介服务器创建自己的NAT遍历形式。中间服务器将向用户提供前端UI,并向嵌入式网络设备发出后端数据请求。嵌入式设备和应用程序服务器之间的连接将是持久的,并从嵌入式设备启动,以避免常见的NAT麻烦(即配置端口转发的要求)。

尽管我之前提到过,我将使用我自己的协议通过原始套接字连接来实现设备到服务器的连接,但是我现在正在实际尝试的机制是将纯HTTP与长轮询一起使用。嵌入式设备启动与应用程序服务器的HTTP连接,并且当服务器需要发送某些内容时,延迟的响应用于将数据传送回该设备。然后,我将以“隧道”的方式在相反的顶部进行HTTP请求。

因此,简单来说,我的“桥接”层是从两侧向内接受HTTP连接(外部设备连接以及内部Web应用程序REST请求)的层。通过使用长轮询,它将有效地在连接的客户端之间传达请求和响应。

不停地

创建中间人而不是替换http层。在节点中创建一个http服务器,该服务器是所有其余请求的目标。然后,它将请求传输到专有协议上,并通过转换回静态来处理响应。

这样,您不必破解其余代码,甚至可以根据需要将其换出另一个库。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Node 的请求模块通过 REST API 上传文件

来自分类Dev

Node.js请求-无法获取REST响应(JSON)的属性

来自分类Dev

在 Node js 中 Rest Api 请求(curl 到 Node.js,python 到 Node.js)

来自分类Dev

如何使用node-rest-client查看原始HTTP请求和原始HTTP响应

来自分类Dev

Node.js http GET请求比浏览器,REST客户端等花费的时间更长

来自分类Dev

使用 Node Js 和 express 调用来自 rest api 的 post 请求时出错。请求数据变空

来自分类Dev

如何在node.js中异步执行多个REST API请求?

来自分类Dev

(仅限Safari)Axios请求不会将cookie发送到Node.js / Express REST API

来自分类Dev

Node.js REST端点未捕获从axios请求传递的参数

来自分类Dev

如何在node.js中异步执行多个REST API请求?

来自分类Dev

Express Node JS + HTTP 协议:通过请求/响应发送图像

来自分类Dev

Node.js请求库未设置所有cookie

来自分类Dev

NODE JS取消请求

来自分类Dev

带有参数 Node.js 的 HTTP GET 请求

来自分类Dev

普通的HTTP请求和REST请求有什么区别

来自分类Dev

通过 qwest REST Firebase 请求

来自分类Dev

Angular Sequential HTTP Rest请求

来自分类Dev

链接多个Node http请求

来自分类Dev

使用 Python 的 REST JSON 请求

来自分类Dev

Node.js GET请求

来自分类Dev

Node.js通过选项(http或https)直接请求URL

来自分类Dev

HTTP协议中POST请求/响应正文的有效负载的最大限制是多少?通过REST发送JSON

来自分类Dev

Node.js请求库的相对uri

来自分类Dev

node.js 通过请求模块发送

来自分类Dev

Node JS上的HTTP请求回调

来自分类Dev

Node.js axios http请求循环

来自分类Dev

Node js http 请求:选项中的变量

来自分类Dev

使用Node.js通过AJAX请求从Redis检索数据

来自分类Dev

如何使用node.js读取请求请求有效负载并进行表达?

Related 相关文章

  1. 1

    使用 Node 的请求模块通过 REST API 上传文件

  2. 2

    Node.js请求-无法获取REST响应(JSON)的属性

  3. 3

    在 Node js 中 Rest Api 请求(curl 到 Node.js,python 到 Node.js)

  4. 4

    如何使用node-rest-client查看原始HTTP请求和原始HTTP响应

  5. 5

    Node.js http GET请求比浏览器,REST客户端等花费的时间更长

  6. 6

    使用 Node Js 和 express 调用来自 rest api 的 post 请求时出错。请求数据变空

  7. 7

    如何在node.js中异步执行多个REST API请求?

  8. 8

    (仅限Safari)Axios请求不会将cookie发送到Node.js / Express REST API

  9. 9

    Node.js REST端点未捕获从axios请求传递的参数

  10. 10

    如何在node.js中异步执行多个REST API请求?

  11. 11

    Express Node JS + HTTP 协议:通过请求/响应发送图像

  12. 12

    Node.js请求库未设置所有cookie

  13. 13

    NODE JS取消请求

  14. 14

    带有参数 Node.js 的 HTTP GET 请求

  15. 15

    普通的HTTP请求和REST请求有什么区别

  16. 16

    通过 qwest REST Firebase 请求

  17. 17

    Angular Sequential HTTP Rest请求

  18. 18

    链接多个Node http请求

  19. 19

    使用 Python 的 REST JSON 请求

  20. 20

    Node.js GET请求

  21. 21

    Node.js通过选项(http或https)直接请求URL

  22. 22

    HTTP协议中POST请求/响应正文的有效负载的最大限制是多少?通过REST发送JSON

  23. 23

    Node.js请求库的相对uri

  24. 24

    node.js 通过请求模块发送

  25. 25

    Node JS上的HTTP请求回调

  26. 26

    Node.js axios http请求循环

  27. 27

    Node js http 请求:选项中的变量

  28. 28

    使用Node.js通过AJAX请求从Redis检索数据

  29. 29

    如何使用node.js读取请求请求有效负载并进行表达?

热门标签

归档