node.js - 如何使用 node.js 使用自定义协议(protocol)/方案定义路由?

标签 node.js http protocols

我浏览了互联网,但没有找到任何关于如何使用 node.js 使用自定义方案 (my-app://) 创建路由的好资源。

严格来说,它不会是真正的自定义协议(protocol),它会是 http 但使用另一种方案。

我该怎么做?

我可以安装任何 npm 包。

最佳答案

如果它是 HTTP,那么即使其他一些客户端应用程序使用另一种方案进行连接,您仍然会在服务器端将其作为 HTTP 获取。

事实上,在 HTTP 协议(protocol)中,您不会在请求中获取协议(protocol)方案。您在 Host heared 中获取主机(主机名和端口),并在请求的 GET lite(或 POST 等)中获取路径(带有查询字符串但没有片段部分)。客户端绝不会发送任何关于它使用什么协议(protocol)的指示,除非它是对正向代理服务器的请求(但如果它是反向代理则不是)。

假定使用哪种协议(protocol)方案的是您的服务器,因为它知道它在给定端口上使用的协议(protocol)。如果您描述的客户端在 URL 中使用其他协议(protocol)名称但使用 HTTP 连接到您的服务器,则您的服务器只需要知道 HTTP 并且路由通常不包含该协议(protocol),除非它是 Diet .js 但即便如此,它也用于 listen 参数,而不是路由。

这是一个 HTTP 请求示例:

GET / HTTP/1.1
Host: localhost:3344
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,pl;q=0.6

它唯一有“HTTP”的地方是定义协议(protocol)版本的第一行,以便客户端可以正确理解 header ,无论如何你都需要保留它,以便你的服务器可以工作,如果你想使用内置的 http 模块或 Node.js 中的任何框架。如果您更改了它,那么您将不得不编写自己的协议(protocol)解析器。

关于node.js - 如何使用 node.js 使用自定义协议(protocol)/方案定义路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42340677/

相关文章:

node.js - 不变违规 : TurboModuleRegistry. getEnforcing(...): 'NativeReanimated' 找不到

javascript - 在nodejs中使用fs的绝对路径

protocols - 最有效的双氢睾酮

objective-c - iOS11 Swift 4 - 如何检查 Swift 类是否符合 Objective-C 中定义的协议(protocol)?

c++ - 来自应用程序的 HTTP 请求在发件人的网络/代理和我们的网络主机之间消失

Swift 忘记对象是一种类型

node.js - 通过 Sequelize (Express/NodeJS) 访问 mysql 时出错

javascript - 获取属于 JavaScript/Node js 中特定 ID 的数组对象的计数

javascript - 如何 PUT 到 JSON 数组中的某个对象(npm 请求)

javascript - 将外部 react 性 API 数据插入到 Meteor 集合中