WebSockets və ya Server-Sent / EventSource Hadisələr

Hər iki WebSocketsServer-göndərilən Hadisələr brauzerlərə məlumatları ötürə bilər. Mənə, onlar rəqabət texnologiyaları kimi görünürlər. Onların arasındakı fərq nədir? Bir dəfə nə vaxt seçəcəksiniz?

582
04 марта '11 в 18:07 2011-03-04 18:07 Mads Mobæk, 04 Mart 2011 tarixində saat 18:07 'də təyin olunub
@ 7 cavab

Websockets və SSE (server tərəfindən göndərilən hadisələr) eyni vaxtda brauzerlərə məlumat ötürə bilər, lakin onlar texnologiya ilə rəqabət aparırlar.

Veb əlaqələri brauzerə məlumat göndərə və ya brauzerdən məlumat ala bilər. Ağların istifadə edə biləcəyi bir tətbiqin yaxşı bir nümunəsi bir sohbet proqramıdır.

SSE əlaqələri yalnız məlumatları brauzerə ötürə bilər. Vaxt xəttini və ya yemini yeniləyən onlayn fond quotes və ya tweeters SSE-dən istifadə edə biləcək bir tətbiqin yaxşı nümunələridir.

Təcrübədə, SSE-dən istifadə edilə bilən hər şeyi Websoketlərdən istifadə etməklə həyata keçirə biləcəyimiz üçün, Websockets daha çox diqqət və sevgi alır və bir çox digər brauzerlər SSE-dən daha çox web saytları dəstəkləyir.

Bununla belə, bəzi tətbiq növləri üçün həddindən artıq ola bilər və arxa tərəf SSE kimi bir protokoldan istifadə etmək daha asan ola bilər.

Bundan əlavə, SSE yalnız JavaScript istifadə edərək əvvəlcədən dəstəkləməyən köhnə brauzerlərdə polyliz edilə bilər. SSF-polipolkun bəzi tətbiqləri Modernizr github səhifəsində tapa bilərsiniz.

Gotças:

  • SSE, hər bir brauzer üçün limit çox aşağı bir rəqəmə (6) təyin edildiyi üçün, müxtəlif sekmeleri açarkən xüsusilə ağrılı ola biləcək maksimum açıq sayda limitə malikdir. Məsələ ChromeFirefox-da "Sabit deyil" kimi qeyd olunur
  • Yalnız WS ikili məlumatları və UTF-8 ötürə bilər, SSE UTF-8 ilə məhdudlaşır. (Chado Nihi sayəsində).

HTML5Rocks SSE haqqında bəzi faydalı məlumatları ehtiva edir. Bu səhifədən:

Server və veb saytlar tərəfindən göndərilən hadisə

WebSockets vasitəsilə Niyə server göndərilən hadisələri seçirsiniz? Yaxşı sual

SSE'nin səbəblərindən biri kölgələrdə saxlanılır ki, daha sonra WebSockets kimi API'lar ikitərəfli tam dubleks kommunikasiya aparmaq üçün daha zəngin bir protokoldur. İki kanallı kanal olması oyun, mesajlaşma proqramları və hər iki istiqamətdə demək olar ki, real vaxt yeniləmələrə ehtiyac duyulduğunda daha cəlbedicidir. Lakin, bəzi ssenarilərdə, məlumatların müştəriyə göndərilməsinə ehtiyac yoxdur. Yalnız hər hansı bir server fəaliyyətindən yeniliklərə ehtiyacınız var. Bir neçə nümunə dostluq statusu yeniləmələri, səhmdar cədvəlləri, xəbər axınları və ya digər avtomatlaşdırılmış məlumat ötürülmə mexanizmləri (məsələn, web SQL müştəri verilənlər bazasını və ya IndexedDB obyektlər mağazasının yenilənməsi). Bir serverə məlumat göndərmək istəyirsinizsə, XMLHttpRequest həmişə bir dostdur.

SSE'ler ənənəvi HTTP üzərinə göndərilir. Bu, işin xüsusi bir protokol və ya server tətbiqi tələb etmir deməkdir. Digər tərəfdən WebSockets, protokolu işləyəcək tam dupleks əlaqələri və yeni Socket Socket serverləri tələb edir. Bundan əlavə, Sunucu Gönderen Etkinlikler, avtomatik yeniden bağlanma, etkinlik tanımlayıcıları ve keyfi hadisələr göndərmə imkanı kimi WebSockets'i olmayan bir çox özelliklere malikdir.


TL-ə baxış; DR:

Websockets üzərində SSE üstünlükləri:

  • Xüsusi protokol əvəzinə düz HTTP vasitəsilə ötürülür
  • Henüz desteklemeyen brauzerlər üçün "backport" SSE üçün javascript ilə doldurula bilər.
  • Yenidən bağlanma və hadisə ID'si üçün yerli dəstək
  • Sadə protokol

SSE üzərində veb saytların üstünlükləri:

  • Real vaxt, iki tərəfli ünsiyyət.
  • Daha çox brauzerlərdə yerli dəstək

SSE üçün ideal istifadə edir:

  • Stream bilet axını
  • Twitter yeniləmə
  • Brauzer bildirişləri

SSE gotchas:

  • İkili dəstək yoxdur
  • Maksimum açıq əlaqə limiti
657
16 марта '11 в 16:40 2011-03-16 16:40 Cavab Alex Recarey 16 mart 16: 40-da verilir. 2011-03-16 16:40

Caniuse.com saytına görə:

SSE dəstəyini bir çox digər brauzerlərdə genişləndirmək üçün müştəri polifillənizdən istifadə edə bilərsiniz. Bu WebSockets ilə daha az ehtimal olunur. EventSource'un bəzi siyasətləri:

Bütün brauzerləri dəstəkləməlisinizsa WebSockets, SSE, Forever Frame və AJAX uzun seçki kimi bir neçə nəqliyyata dəstək verən veb-socket-js , SignalR və ya socket.io kimi kitabxanadan istifadə etməyi düşünün. Onlar tez-tez server yan dəyişiklikləri də tələb edir.

SSE haqqında daha ətraflı məlumat:

border=0

WebSockets haqqında daha ətraflı məlumat:

Digər fərqlər:

  • WebSockets keyfi ikili məlumatları dəstəkləyir, SSE yalnız UTF-8 istifadə edir
84
23 янв. 23 yanvarda Drew Noakes'e cavab verin 2014-01-23 14:38 '14 'da 14:38 2014-01-23 14:38

Opera, Chrome, Safari, SSE, Chrome dəstəkləyir, Safari SharedWorker daxilində SSE-ni dəstəkləyir Firefox interaktiv XMLHttpRequest readyState dəstəkləyir, belə ki, Firefox üçün polyfil EventSource edə bilərsiniz

13
11 марта '11 в 21:49 2011-03-11 21:49 cavab Yaffle 11 mart 11: 11-da verilir 2011-03-11 21:49

Websocket VS SSE


Veb sockets - . Bu, bir TCP bağlantısı üzərində tam dupleks əlaqə kanalını təmin edən bir protokoldur. Məsələn, Server və Browser arasında iki tərəfli ünsiyyət. Protokol daha mürəkkəb olduğundan, server və brauzer socket.io

 Example - Online chat application. 

SSE (server tərəfindən göndərilən hadisə) - Bir server hadisəsi halında, kommunikasiya yalnız serverdən brauzerə keçirilir və brauzer heç bir məlumatı serverə göndərə bilmir. Bu rabitə əsasən yenilənmiş məlumatları göstərmək lazım olduqda istifadə olunur, məlumat yeniləndiyi zaman server bir mesaj göndərir. Məsələn, server və brauzer arasında birtərəfli ünsiyyət. Bu protokol daha az mürəkkəbdir, belə ki, xarici kitabxanaya etibar etmək lazım deyil. JAVASCRIPT özü, server tərəfindən göndərilən mesajların alınması üçün bir EventSource interfeysi təqdim edir.

 Example - Online stock quotes or cricket score website. 
4
01 мая '17 в 20:58 2017-05-01 20:58 Cavab Gaurav Tiwari tərəfindən mayın 01'17 ' də 20:58 2017-05-01 20:58 tarixində verilir

Bir qeyd:
Veb saytlar və korporativ firewalllarla problemlər yaşadım. (HTTPS istifadə edərək, həmişə kömək etmir.)

Https://github.com/LearnBoost/socket.io/wiki/Socket.IO-and-firewall- proqramına baxın https://github.com/sockjs/sockjs-client/issues/94

Hesab edirəm ki, server-göndərilən hadisələrlə bağlı çoxlu problem yoxdur. Amma bilmirəm.

Lakin, WebSockets çox əyləncəli. (Socket.IO vasitəsilə) ( http://minibman.com ) websockets istifadə kiçik bir web oyun var

3
19 апр. Drew LeSueur tərəfindən verilmiş cavab 19 aprel 2014-04-19 06:04 '14 'da 6:04 2014-04-19 06:04

Burada veb rozetləri və server tərəfindən göndərilən hadisələr arasındakı fərqlər barədə danışmaq olar. Java EE 7 API WebSocket artıq spesifikasiyanın bir hissəsi olduğundan, server tərəfindən göndərilən hadisələrin müəssisənin növbəti versiyasında təqdim edəcəyi görünür.

1
12 июля '14 в 10:17 2014-07-12 10:17 Cavab Patrick Leitermann tərəfindən 12 İyul '14 'də saat 10:17' də verilir 2014-07-12 10:17

Maksimum əlaqənin məhdudlaşdırılması http2 + sse ilə problem deyil.

Bu, http: 1 problemi idi

-2
22 нояб. Cavab 22 noyabr tarixində user1948585 tərəfindən verilmişdir. 2017-11-22 23:26 '17 saat 11.26 'da 2017-11-22 23:26

haqqında digər suallar və ya sual