2012-05-30 21 views
31

Şimdi bir gün gerçek zamanlı güncellemeler, yoğun kullanımlara sahip olan çoğu popüler sitede yaygındır.Gerçek zamanlı güncellemeler nasıl çalışır?

  • StackExchange
  • Facebook
  • Heyecan Bunları "gerçek zamanlı güncellemeleri" işi nasıl yapacağız merak ediyorum

? Ben sadece genel bir kuşbakışı perspektifini arıyorum. JS'nin bir güncelleme için sunucuyu her X saniyede çağıramayacağını ve bunu <ul>'a ekleyemediğinden şüpheleniyorum. Sunucudan gönderilen bir bildirim daha fazla içerik çekmeye gitti mi? Bir demo ile açıklıyor basit nasıl makale varsa

harika olurdu?

+5

İki kelime: [Web yuvaları] (http://en.wikipedia.org/wiki/WebSocket) – Dennis

+1

[budur] (http://en.wikipedia.org/wiki/WebSocket) [ HTML5] (http://www.html5rocks.com/en/tutorials/websockets/basics/). –

+21

Tek kelime: [WebSocket] (http://en.wikipedia.org/wiki/WebSocket) –

cevap

22

yığın taşması gerçek zamanlı güncellemeleri Web Sockets kullanıyor.

StackExchange.ready(function() { 
    StackExchange.realtime.init('ws://sockets.ny.stackexchange.com'); 
    StackExchange.realtime.subscribeToInboxNotifications(); 
    StackExchange.realtime.subscribeToReputationNotifications('1'); 
}); 

Ancak bazı Opera sürümleri WebSocket'e desteklemediği unutmayın: Eğer kaynak kodu (hat 35) bir göz atacak olursak, sen görecekti. (not until Opera 10.70)

Ancak Facebook Web Yuva kullanmak gibi görünmüyor ve ben onlar sadece daha sonra yeni bilgi kalmayıncaya kadar sunucu bağlantısı üzerinde tutan long polling denilen teknikle, ve sunucu ile basit xhr kullandığınız düşünüyorum isteğinize cevap verecektir. Geliştirici araçlarını açarsanız, her zaman bir bekleyen durumu olan bir istek olduğunu görebilirsiniz.

Bu bir istek her ~ 60 saniyede göndererek, gerçekten de öyle.

2

Twitter, "gerçek zamanlı güncellemeleri" için basit XHR (1 dakikalık aralıklarla) kullanıyor.

0

Facebook long polling/Comet kullanır. Yani bir bağlantı kurar ve bir cevap bekler, eğer cevap yoksa, zaman aşımına uğrar ve tekrar dener. Zaman aşımı 40 saniyedir. Anında güncellemenin çoğu böyle yapılır. Bununla birlikte, tekniklerin bir kombinasyonunu kullanırlar. Burada uzun oylama hakkında daha fazlası.

http://en.wikipedia.org/wiki/Comet_(programming)

İlgili konular