2017-02-20 23 views
3

Я перестал пользоваться Интернетом, но не нашел хорошего ресурса о том, как создавать маршруты с помощью специальной схемы (my-app: //) с node.js.Как определить маршруты с помощью настраиваемого протокола/схемы с node.js?

Строго говоря, на самом деле это не было бы обычным протоколом, это был бы http, но служил с другой схемой.

Как это сделать?

Я могу установить любые пакеты npm.

ответ

1

Если это HTTP, то даже если какое-либо другое клиентское приложение использует другую схему для подключения, вы все равно получите ее как HTTP на стороне сервера.

Фактически, в протоколе HTTP вы не получаете схему протокола в запросе. Вы получаете хост (имя хоста и порт) в Host heared и yu получаете путь (с строкой запроса, но без фрагмента) в GET lite запроса (или POST и т. Д.). Ни в коем случае клиент не посылает какие-либо указания о том, какой протокол он использует, если только это не запрос на прокси-сервер (но не обратный прокси).

Это ваш сервер, который предполагает, какая схема протокола используется, потому что он знает, с каким протоколом он говорит с данным портом. В случае, когда вы описываете клиента, который использует другое имя протокола в URL-адресе, но подключается к вашему серверу с помощью HTTP, ваш сервер должен знать HTTP, и маршруты обычно не включают протокол в любом случае, возможно, если это не диета .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 или любую инфраструктуру в узле. Если вы изменили это, вам придется написать собственный синтаксический анализатор протокола.