Стоит ли отправлять ответы по веб сокету, если соединение уже установлено или лучше использовать rest?
В проекте много где используюся веб сокеты. Как показывает собственный опыт, получать по ним сообщения очень удобно, а вот отправлять уже совсем нет.
Сразу же возникают проблемы с показом лоадеров, так как сложнее привязать запрос к конкретному ответу, что в классическом rest сделано по умолчанию. То же самое касается и обработки ошибок. Сокеты лишают возможности сделать что-то аналогичное Promise.all и тд.
Эти проблемы наталкивают на мысли, что для приема сообщений стоит использовать сокет, а на сервер сообщения отправлять лучше по старинке.
Как вы решаете, когда что лучше использовать?
Хочется услышать ваши мысли, как лучше организовать работу. Возможно, есть хорошие либы
Решение проблем - это необходимый навык.
Отправляйте с запросом какой-нибудь id запроса, и в ответе его же возвращайте, и будут у вас и лоадеры и ошибки и promise.all и все остальное с небольшим колчеством усилий.
Все решаемо, я не спорю. А есть ли смысл утруждаться, если можно совместить рест + сокеты?
Просто хочу понять альтернативную логику, почему стоит или не стоит это делать
ivan0512, вы хотите добавить в систему еще один протокол, заметно усложняя ее просто чтобы не "утруждаться". то что этот протокол простой понятный и не надо думать чтобы его прикрутить не меняет дела.
Это можно сделать если у вас аврал, и дедлайн сорван на месяц, чтобы заткнуть дырки и спокойно подумать потом.
В нормальном состоянии лучше сразу немного подумать над тем как сделать систему лучше и проще, чем лепить ее из тех решений что удобно прикрутить прямо сейчас. Потому что через год - два такой работы у вас будет динозавр, который будет состоять из кучи "легких" решений, костылей чтобы их между собой соеденить и такой-то матери.
Если вы хорошо обдумали, и знаете как добавить поддержку запрос-ответа в сокеты, и видите что это решение будет сложней и хуже чем прикручивание реста, тогда да, можно прикручивать рест. но тут никак не может быть аргументом "ну, нам для этого надо напрячься и подумать".
Robur, а что в этом такого? Чище код? - Спорно, при том, что будет написано свое, пусть и небольшое, решение.
Тут даже не про напрячься. Подобное решение с сокетами, с покрытием всех кейсов и тестами, можно за день сделать. Вопрос в том, для чего это нужно это делать, если другой протокол лучше подходит для данной ситуации. Допустим, получаю нотификации по сокету, а удалить все могу рест запросом. Вроде как ничего плохого в этом нет.
Было интересно, как бы поступили другие люди)
ivan0512, я понятия не имею что у вас за система, и что вам будет лучше. ключевое в моем ответе было "вы все хорошо обдумали, знаете плюсы и минусы каждого решения и можете оценить их с разных сторон".
А так как вы поставили вопрос - "А есть ли смысл утруждаться, если можно совместить рест + сокеты". Смысл есть, почему - я ответил.