2017-01-25 4 views
0

The Trouble:Nodejs HTTP Обновление заголовочных

Когда я получить и обновить заголовок, который говорит: «Upgrade: HTTPS» я понятия не имею, какой браузер делает следующий, и что меня смущает.

1) Ожидает ли браузер ответа на вопрос, какой протокол он обновил? 2) что он делает дальше? в случае https он создает новое соединение с https и сохраняет его где-то в кэше? 3) в случае сетевых розетки? закрывает ли первое подключение квитирования и устанавливает новое соединение? и снова он кэширует информацию о том, какой проток использовать? 4) Я знаю, что есть много WS-библиотек, но мне нравится знать, как это работает, если я использую только собственные модули nodejs.

большое спасибо заранее.

+0

Вы можете увидеть шаг за шагом процесс создания соединения webSocket с сервером здесь: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers – jfriend00

ответ

2

Вся схема протокола обратной связи документирована очень хорошо here.

1) Ожидает ли браузер ответа на какой проток он обновляется?

Да, клиент посылает это:

GET /chat HTTP/1.1 
Host: example.com:8000 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== 
Sec-WebSocket-Version: 13 

сервер отвечает следующим образом:

HTTP/1.1 101 Switching Protocols 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= 

2) то, что он делает дальше?

Когда получено это подтверждение с сервера и код ответа 101, клиент знает, что сервер переключил текущий сокет на протокол webSocket. Этот в настоящее время открытый сокет (из исходного HTTP-запроса) становится сокет webSocket. Либо клиент, либо сервер теперь могут отправлять фрейм данных с форматированием webSocket на другой конец.

3) в случае сетевых розетки? закрывает ли первое подключение квитирования и устанавливает новое соединение?

Нет, исходный сокет от первоначального запроса http становится соединением webSocket.

и снова делает это кэшировать информацию о том, что protoc использовать

Это просто часть состояния каждого конца держит около оригинального разъема. Нет нового гнезда.

4) Я знаю, что есть много WS-библиотек, но мне нравится знать, как это работает, если я использую только собственные модули nodejs.

Это хорошо, чтобы понять, как это работает, но если это не просто академический интерес или проект, это, вероятно, неэффективное использование времени разработки, чтобы написать свой собственный протокол WebSocket, как это было сделано другими много раз, и это справедливое количество подробных работ, чтобы получить все правильное и совместимое с некоторыми из вариантов спецификации.

Кроме того, что уже было описано здесь, есть формат кадра данных, ключи шифрования, фрагментация пакетов, свистит и PONGS, суб поддержка протокола, и т.д. ...

+0

@ АлександрБелый - Это ответ на ваш вопрос? Если это так, то вы можете указать это сообществу, щелкнув зеленую галочку слева от ответа, а также заработайте здесь несколько точек репутации при переполнении стека за правильную процедуру. – jfriend00

Смежные вопросы