Вся схема протокола обратной связи документирована очень хорошо 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, суб поддержка протокола, и т.д. ...
Вы можете увидеть шаг за шагом процесс создания соединения webSocket с сервером здесь: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers – jfriend00