webhook ve websocket arasındaki farklar


86

Her zaman gerçek zamanlı sohbet etmek istemişimdir.

Bunu yıllar önce PHP + Ajax + Mysql'de yaptım ve sunucumu bozdum. Sonra Flash + bir metin dosyası ile denedim. Vazgeçtim ve 10 yıldır denemedim. Ancak son zamanlarda web kancaları ve web soketleri hakkında bir şeyler duydum. Ve ikisi de bunu yapmanın bir yolu gibi görünüyor ama farkı tam olarak anlamıyorum. Herkes açıklayabilir mi?

Yanıtlar:


236

Web kancaları

Web kancaları , sunucudan sunucuya iletişim içindir. Bir sunucu tarafından başka bir sunucuya bir şey olduğunda belirli bir url'ye veri gönderilmesini istediğini söyleyerek çalışırlar.

Bu makale , popüler hizmetlerdeki web kancalarının bazı kullanımlarından bahsediyor. Bu kuruluş , bunları RESTful API'ler bağlamında kullanmaktan çok bahsediyor.

Web soketleri

Web yuvaları (genellikle) sunucudan tarayıcıya iletişim içindir. Sunucu bir websocket sunucusunu barındırır ve istemciler bu sunucuya bir bağlantı açabilir. Bu artık popülerdir çünkü uzun anket / COMET gibi problemi çözmenin eski yollarından daha hızlı ve daha az kaynak tüketir .

Web soketlerini kullanarak 2 sunucuyu bağlamak mümkündür , ancak genellikle bunun için kullanılmazlar.

Karışıklık

Bunlardan biri (münhasıran) sunucu-sunucu ve biri (çoğunlukla) tarayıcı-sunucu olsa da, bu teknolojiler genellikle aynı yerlerde, neredeyse aynı sorunları çözüyormuş gibi tartışılır. Zincire yeterince yukarı bakarsanız, her ikisinin de "gerçek zamanlı" iletişim sorununu çözdüğünü, ancak bu sorunun farklı yönlerini çok farklı şekillerde çözdüklerini görürsünüz .

Doğrudan karşılaştırmanın yapılabileceği bir durum, üçüncü taraf bir sunucu tarafından tüketilecek bir API oluşturuyor olmanızdır. Bu durumda, bir webhook API veya bir websocket API sağlayabilirsiniz . Her ikisi de üçüncü tarafın güncellemeleri hızlı bir şekilde almasına izin verir:

  • Webhook'ları seçerseniz, söz konusu üçüncü tarafın, onlara anlattığınız değişiklikleri müşterilerinin tarayıcılarına aktarmanın bir yolunu bulması gerekecektir.
  • Bir websocket API sağlarsanız, üçüncü taraf sitelerini, kullanıcılarının her biri doğrudan websocket API'nize bağlanacak ve sunucularının daha az iş yapması gerekecek şekilde ayarlayabilir.

1
Bu harika bir cevap! Çok teşekkür ederim!
David 天宇 Wong

4
Web soketleri genellikle istemci-sunucu iletişimi için kullanılır, ancak bununla sınırlı değildir. Sunucu-sunucu iletişimi için de kullanılabilirler.
Pithikos

Hem websocket hem de webhook'ta soket sürekli açık kalıyor mu? 10000 sunucuyu kancalamak sarılmayı güçleştirir mi?
Thellimist

3
Web yuvaları, konuşma süresince hem istemcide hem de sunucuda bir soketi açık tutar (bu aynı zamanda sunucuları durum bilgili hale getirir ve bu da ölçeklemeyi daha zor hale getirir). Webhook'ların sunucuda açık kalması için bir soket gerekir. İstemcide, soket yalnızca istek için açılır (tıpkı diğer HTTP istekleri gibi). Web kancaları hem istemcide (bir şey olduğunda çok sayıda sunucuya bildirimde bulunmanız gerekiyorsa) veya sunucuda (çok sayıda istemciden gelen güncellemeleri dinlemeniz gerekiyorsa) pahalı olabilir, ancak her ikisi de yalnızca HTTP kullanır ve HTTP hizmetlerini ölçeklendirmek için birçok çözüm mevcuttur.
turtlemonvh

18

Web kancaları ve web yuvaları arasında seçim yapmak için bazı ek bilgiler aşağıda verilmiştir.

Web soketleri üzerinden sunucudan sunucuya iletişim, yeni nesil chatbot uygulamaları ile popüler hale geldi. Artık birçok sohbet robotu, dahili, özel botlar için herkese açık bir URL gerektirmemesi gibi birincil bir avantaj sağlayan web yuvaları üzerinden çalışıyor. Bu ortamda, aşağıda web kancaları ve web yuvalarının ne zaman kullanılacağına ilişkin bazı yönergeler verilmiştir.

Web soketleri

  • Uygulamanız bir tarayıcı uygulamasıysa, web yuvalarını kullanın çünkü uygulamanız web kancalarını alamaz.
  • Uygulamanız İnternet üzerinden bir hizmetten mesaj alan bir sunucu uygulamasıysa ve güvenlik duvarınızı açmak istemiyorsanız, web yuvalarını düşünün. Bazı şirketler, bu tür bağlantıları açmadan önce bilgi güvenliği incelemesine ihtiyaç duyar.

Web kancaları

  • Sunucu uygulaması uygulamanızın çok sayıda abonelik yapması gerekiyorsa, sunucunuza açık websocket bağlantılarının hacmini işlemeye hazır olun ( 1M websocket bağlantıları için bu makaleye bakın ) veya webhook'lara geçin. Bazı popüler sohbet robotları, ölçeklenebilirliği artırmak için web yuvalarından web kancalarına taşındı.
  • Sunucu uygulamanız açık bir bulut işlevi olarak çalışıyorsa (AWS Lambda, Google Cloud Functions, vb.), Uygulamanız websocket bağlantısını açık tutmayacağından web kancaları kullanın.
  • Sunucu uygulamanız Heroku ücretsiz katmanında çalışıyorsa, Dyno'nuz uyku moduna geçeceği ve sunucunuza manuel olarak uyumasını istemediğiniz sürece günde 6 saat uyuması gerekeceği için web kancaları kullanın.
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.