RESTful HTTP ve websocket aynı uygulamada mı?


17

Bir uygulama zaten WebSocketcanlı yayınlar için açılmışsa, bunu AJAXsunucuyla diğer iletişimler için mi kullanmalıyım?

Bağlantı zaten açılmış olduğundan, Request/Responsegerçek zamanlı olmayan istekler için kullanmalı mıyız ?

RESTful HTTPİstekleri tercih ediyorum çünkü hata ayıklamalarını daha kolay buluyorum. API'nın ne döndürdüğünü test etmek için URL veya bukleler içeren bir tarayıcı kullanabilirsiniz. Açmak için kod yazmak zorunda değilsiniz WebSocket.

O sahip olmak garip olur RESTful HTTP APIve bir WebSocketaynı uygulama içinde?


1
"API'yı test etmek için herhangi bir kod yazmak zorunda değilsiniz" Bunu biraz daha açıklayabilir misiniz? API'yı test etmeniz gerekmediğini düşündüren nedir?
Elias Van Ootegem

Yanılmıyorsam Chrome Geliştirici Araçları bir websocket açmanıza ve gerçek zamanlı mesaj göndermenize izin verir
maple_shaft

@EliasVanOotegem İyi bir nokta. Üzgünüm bu belli değildi. API'yı yine de sunucu tarafında bir birim projeyle test etmeniz gerekir. Demek istediğim, API'nin ne döndüreceğine hızlı bir şekilde bakmak istiyorsanız, url ile bir broswer kullanabilirsiniz. Web soketi açmak için kod yazmak zorunda değilsiniz. Sorumu güncelledim.
Marc

@maple_shaft Bu iyi, ancak sunucuya bir WebSocket açılmış bir sayfada olmanız gerekir.
Marc

Yanıtlar:


14

Websockets'in temel tasarım amaçlarından biri, hem HTTP hem de Websocket protokollerinin aynı bağlantı noktası üzerinden iletilmesine izin vermesidir. Bunu, bir istemciden bir HTTP Yükseltme isteği ile bir Websocket anlaşması gerçekleştirmesini isteyerek başarır. Bu şekilde sunucu standart bir HTTP istek bağlantısını ve artık kalıcı iki yönlü bir çift yönlü bağlantıya yükseltilen bir HTTP Yükseltme isteğini işleyebilir.

Yani evet, bu kesinlikle geçerli bir kullanım durumudur, ancak bunu özel uygulamanız için yapmanız gerekip gerekmediği tamamen farklı bir konudur. Websockets yararlıdır ve sunucunun istemciye istenmeyen veriler (canlı yayınlar) gönderme yeteneğine sahip olması gereken senaryolara sahip olduğunuzda anlamlıdır. HTTP protokolü ve REST hizmetleri, verilerin eşzamanlı istemci isteğini engellemek istediğinizde kullanışlıdır.

Gereksinimleriniz, her ikisi de uygulamanız için mantıklı olacaksa, her ikisini de kullanmalısınız. Bununla birlikte, sunucunuzla tek etkileşiminiz canlı yayına dayalıysa, REST hizmetleri uygun değildir. Bence, hata ayıklama kolaylığı, tasarımınızı tasarlamanız gereken Sistem Kalite Öznitelikleri açısından oldukça düşük önemde olmalıdır.


1
Merak ettiğim şey buydu. Gerçek zamanlı canlı yayın için web soketlerini kullanmak mantıklı, ancak CRUD işlemleri ne olacak? Bunlar için standart bir HTTP isteği kullanmak daha aklıma geliyor.
Marc

2
@Marc, CRUD işlemlerini ve gerçek zamanlı endişeleri (biri diğer Websockets'i HTTP kullanarak) ayırmak garip bulamazdım ... ama ... sunucudan daha iyi yanıt alacağınıza inanıyorum. tüm işlemleriniz için kalıcı bağlantı (Websocket) kullanırsanız daha iyi performans. Bu gerçekten CRUD ihtiyaçlarınızı bağlıdır, ama ben bir CRUD Websocket arayüzünden utangaç olmaz.
Myst

upvoted! Burada yeni başlayanlar, her ikisinin de aynı bağlantı noktası üzerinden bildirilmesi gerektiğinden, canlı bir akıştan hisse senedi fiyatları alıyorsanız ve yoğun trafik nedeniyle akış birkaç dakika boyunca kesilirse, aradaki verileri nasıl alırsınız veya ne olur? davanın üstesinden gelmek için çeşitli stratejiler var
PirateApp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.