Jeśli aplikacja ma już otwarty kanał WebSocket
na żywo, czy powinienem go użyć AJAX
do innej komunikacji z serwerem?
Ponieważ połączenie jest już otwarte, czy powinniśmy go używać do żądań, które nie są realizowane w Request/Response
czasie rzeczywistym?
Wolę RESTful HTTP
żądania, ponieważ łatwiej mi je debugować. Możesz użyć przeglądarki z adresami URL lub lokami, aby sprawdzić, co zwraca API. Nie musisz pisać kodu, aby otworzyć WebSocket
.
Byłoby to dziwne, aby RESTful HTTP API
i WebSocket
w tej samej aplikacji?
rest
ajax
websockets
Marc
źródło
źródło
Odpowiedzi:
Jednym z głównych celów projektowych Websockets jest umożliwienie komunikacji zarówno protokołów HTTP, jak i Websocket przez ten sam port. Osiąga to poprzez jawne wymaganie od klienta wykonania uzgadniania Websocket z żądaniem aktualizacji HTTP. W ten sposób serwer może obsłużyć standardowe połączenie żądania HTTP, jak również żądanie uaktualnienia HTTP, które jest teraz uaktualniane do trwałego dwukierunkowego połączenia dupleksowego.
Tak, jest to zdecydowanie uzasadniony przypadek użycia, jednak to, czy POWINIENEŚ to zrobić dla konkretnego zastosowania, to zupełnie inna sprawa. Websockets są przydatne i mają sens tam, gdzie istnieją scenariusze, że serwer musi mieć możliwość wysyłania niechcianych danych do klienta (kanały na żywo). Protokół HTTP i usługi REST są przydatne tam, gdzie chcesz blokować synchroniczne pozyskiwanie danych przez klientów.
Jeśli twoje wymagania są takie, że oba z nich mają sens dla twojej aplikacji, to z całą pewnością powinieneś użyć obu. Jeśli jednak Twoja jedyna interakcja z serwerem opiera się na transmisji na żywo, usługi REST nie są odpowiednie. Myślę, że łatwość debugowania powinna mieć raczej niską wagę pod względem atrybutów jakości systemu , do których należy zaprojektować swój projekt.
źródło