Да, WebSockets ( RFC 6455 ) и Ajax совершенно разные и служат разным целям.
Как вы говорите, с Ajax вы можете выполнять запросы RESTful.Это означает, что вы можете воспользоваться существующей HTTP-инфраструктурой, такой как, например, прокси для кеша запросов и использовать условных запросов на получение .Ajax-запрос может быть довольно тяжелым, поскольку каждый Ajax-запрос содержит заголовки HTTP и файлы cookie.
WebSockets предназначен для двунаправленной связи с малыми задержками.По своей конструкции WebSockets имеет очень мало накладных расходов в каждом сообщении.Например, сообщения WebSockets не должны содержать заголовки HTTP и могут в будущем использоваться для VoIP и потоковой передачи в обоих направлениях.
Другое отличие состоит в том, что Ajax можно использовать с серверами без состояния ,Например, если ваша веб-нагрузка сбалансирована несколькими серверами, любой сервер может обрабатывать Ajax-запрос даже после перезагрузки (или обновления).Вебсокеты «подключены» и используют сервер с сохранением состояния , поэтому с ним может быть сложнее использовать несколько серверов.
В этом случае также есть события, отправленные сервером, которые аналогичны WebSockets.сервер может передавать данные клиенту (что невозможно сделать с помощью Ajax без хаков (например, кометы)), а также может обрабатывать автоматические переподключения.Но это только для сообщений в одном направлении (сервер-клиент).См. Событие на стороне сервера HTML5: EventSource и упакованный WebSocket .