Я недавно наткнулся на сетевой модуль Node, мне было интересно, будет ли использование этого модуля эквивалентом использования модуля socket.io. В чем разница между ними? Благодарность!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


I have recently come upon Node's net module, I was wondering if using this module would be the equivalent of using the socket.io module.
Нет, это даже не одно и то же.
Сетевой модуль узла - это базовый низкоуровневый интерфейс TCP и UDP. Это позволяет вам установить TCP или UDP-соединение с какой-либо конечной точкой, а затем отправлять или получать данные с этой конечной точки по этому соединению. Это необработанные TCP-соединения. Вы определяете протокол, формат данных и все соглашения, используемые при обмене данными. Все, что делает TCP, - это доставляет ваши данные от одного конца до другого.
socket.io находится на другом конце сетевого стека.
socket.io
webSocket
TCP
WebSocket построен поверх TCP. У него есть собственная уникальная схема подключения, которая начинается с http-соединения с определенными настраиваемыми заголовками, а затем запрашивает «обновление» протокола webSocket. Если сервер одобряет обновление, то тот же TCP-сокет, через который было запущено http-соединение, преобразуется в протокол webSocket. Протокол webSocket имеет собственное уникальное шифрование и формат данных.
Socket.io построен на основе протокола webSocket (что означает, что он использует протокол webSocket для обмена данными). Socket.io имеет собственную уникальную схему подключения (начинается с HTTP-опроса, затем переключается на обычный webSocket, если это допустимо), и он имеет дополнительную структуру данных, построенную поверх фрейма данных webSocket, которая определяет имя сообщения, пакет данных и несколько других домашних вещей.
socket.io и webSocket поддерживаются браузером Javascript. Обычное TCP- или UDP-соединение не поддерживается браузером Javascript. Итак, если бы вы хотели общаться с браузером, вы бы не использовали простой TCP.