如何使用node.js定制自定义协议/scheme的路由?

我放弃了互联网,但没有find任何关于如何使用node.js自定义scheme(my-app://)创build路由的好资源。

严格来说,它不是真正的自定义协议,它将是http,但与另一种scheme一起服务。

我怎样才能做到这一点?

我可以安装任何npm软件包。

如果是HTTP,那么即使其他一些客户端应用程序正在使用其他scheme进行连接,您仍将在服务器端将其作为HTTP。

实际上,在HTTP协议中,您不会在请求中获得协议scheme。 你得到主机听到的主机(主机名和端口),然后在GET请求(或POST等)中获取path(带有查询string,但没有片段部分)。 在任何时候,客户端都不会发送任何使用什么协议的指示,除非它是对转发代理服务器的请求(但不是它是否是反向代理)。

这是你的服务器,它假定使用哪个协议scheme,因为它知道它在给定的端口上说什么协议。 如果您描述的是在URL中使用其他协议名称但使用HTTP连接到您的服务器的客户端,那么您的服务器只需要知道HTTP,而且路由通常不会包含该协议,除非它是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”的地方是定义协议版本的第一行,这样客户端就可以正确地理解这些头文件了,这样你就需要保持原样,这样你的服务器就可以工作,如果你想使用内置的http模块或Node中的任何框架。 如果你改变了,那么你将不得不编写你自己的协议parsing器。