Веб-сокеты удовлетворяют другим потребностям, чем запросы XMLHTTP. Последнее - это то, что написано в его названии: запрос: вы знаете, что вам что-то нужно (т. Е. Потому что пользователь нажал на ссылку, прокрутил или что-то в этом роде), и вы получили его - и XHR отлично справляется с этой задачей.
Проблема начинается, когда на стороне сервера могут запускаться определенные события, которые должны быть переданы клиенту в режиме реального времени. Единственное, что вы можете сделать прямо сейчас, - это регулярно опрашивать сервер - это взлом, который сопровождается рядом проблем. И это именно та проблема, для которой созданы Websockets: предоставить обратный канал для браузера для уведомлений в реальном времени.
Я думаю, что Ajax XOR Websockets - это своего рода ложная дихотомия. Они отвечают различным потребностям и могут мирно сосуществовать.