В каких случаях использовать ajax, а в каких websocket?
Есть скрипт, который посылает запрос и должен получить ответ.
Ответ он может получить (допустим) в течение 5 минут.
Вопрос, из каких соображений исходить выбирая между "ajax запрос на сервер раз в N секунд" или "открытие websocket'а"?
На мой взгляд (непрофессионального фронтендщика) вебсокет предпочтительнее, так как клиент моментально получит ответ, как только он появится на сервере и это может быть приятно для пользователя, так как появление данных на сервере - это результат действия в мобильном приложении пользователя и приятно (хоть и не критично) сразу видеть результат, а не через N секунд.
Ответ от пользователя будет ровно один, то есть после его получения скрипт завершает работу.
В данном ключе их практически нет, разве что на сервере нет возможности организовать сокет. В остальном собственно для этого он и придуман, запросы по интервалу это наихудший вариант из возможных.
Отрицательная сторона вебсокета - отсутствие гарантий доставки. Посылка может затеряться, соединение может разорваться, а стороны и не заметят. ajax дает гарантии доставки на уровне протокола.
Slonoed, например на клиенте в случае ajax у вас есть хук onreadystatechange и метод responseText для конкретного запроса. Можно строить бизнес логику. А у websocket только метод send, как крикнуть в пустоту, ни ответа ни привета. Логику строить сложнее. Приходится для консистентности прописывать в сообщениях ID, что бы клиент и сервер понимали про что это было.