Ваш вопрос слишком широк для этой платформы.
Я отвечу, что смогу, кратко.
AJAX / XMLHttpRequest
API XMLHttpRequest
(часто) будет открывать новое соединение с хостом при каждой отправке данных. Это очень дорогая операция, которая снижает производительность.
Еще один момент, на который следует обратить внимание: XMLHttpRequest
будет всегда отправлять аутентификацию и другие заголовки, тратя впустую и пропускную способность, и циклы ЦП как на клиенте, так и на сервере.
Существует также проблема, заключающаяся в том, что этот подход часто основан на опросе, поэтому данные отправляются и обрабатываются, даже если нет изменений или обновлений. Это не только пустая трата времени, но и может повредить другим клиентам, ожидающим обновления.
Наконец, AJAX / XMLHttpRequest
будет использовать TCP / IP-соединение, что замечательно, если вы должны убедиться, что все данные получены в порядке, но происходит снижение производительности.
WebSockets
WebSockets - это протокол, который работает через потоковое соединение, такое как соединения TCP / IP (или каналы или сокеты unix).
Как только соединение установлено, оно является постоянным и позволяет осуществлять двустороннюю связь. Это позволяет и клиенту, и серверу инициировать обновление без опроса и без дополнительных затрат (заголовки, повторная аутентификация и т. Д.).
WebSockets по-прежнему находится через потоковый сокет, такой как сокет TCP / IP, который обеспечивает постоянную производительность в обмен на целостность данных (все данные поступают в порядке).
сокеты TCP / IP
TCP / IP - это потоковый протокол, а не протокол на основе сообщений. По этой причине он часто используется с другим протоколом (например, WebSockets или с пользовательским протоколом).
Поскольку WebSockets будет использовать TCP / IP в 99,9% случаев (если только не на том же компьютере или в особых случаях), здесь применимы те же проблемы, которые я описал для WebSockets.
Однако, используя собственный протокол с TCP / IP, можно добиться некоторой оптимизации производительности (по цене, связанной с сетевым подключением и промежуточными помехами).
UDP (датаграмма)
Многие игры не требуют целостности данных. Не имеет значения, потеряны ли некоторые пакеты, более важно, чтобы последняя информация поступала как можно быстрее.
Это - то, где UDP-сокеты входят. Там нет никакого дорогостоящего этапа согласования соединения (что касается обходов, UDP практически свободен), и нет уровня тестирования целостности данных, который мог бы задерживать данные, поступившие из заказ.
По этим причинам в некоторых играх требуются сокеты UDP для быстрых обновлений, при этом все еще используется соединение TCP / IP для данных, которые должны безопасно доставляться.