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

如何使用node.js自定义协议/方案定义路由?,node.js,http,protocols,Node.js,Http,Protocols,我放弃了互联网,但没有找到任何关于如何使用node.js自定义方案(我的应用程序://)创建路由的好资源 严格地说,它不是真正的定制协议,它将是http,但提供另一种方案 我该怎么做 我可以安装任何npm软件包。如果它是HTTP,那么即使其他客户端应用程序正在使用另一个方案进行连接,您仍然可以在服务器端以HTTP的形式获得它 事实上,在HTTP协议中,您不会在请求中获得协议方案。在hosthear中获取主机(主机名和端口),在请求(或POST等)的get-lite中获取路径(带有查询字符串,但没

我放弃了互联网,但没有找到任何关于如何使用node.js自定义方案(我的应用程序://)创建路由的好资源

严格地说,它不是真正的定制协议,它将是http,但提供另一种方案

我该怎么做


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

如果它是HTTP,那么即使其他客户端应用程序正在使用另一个方案进行连接,您仍然可以在服务器端以HTTP的形式获得它

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

是您的服务器假定使用哪个协议方案,因为它知道在给定端口上使用哪个协议。如果您描述的客户端在URL中使用其他协议名称,但使用HTTP连接到您的服务器,那么您的服务器只需要知道HTTP,并且路由通常不包括该协议,可能除非它是Diet.js,但即使在listen参数中使用,而不是在routes中使用

这是一个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
模块或节点中的任何框架,您的服务器就可以工作。如果您改变了这一点,那么您必须编写自己的协议解析器