HTML5, web uygulamalarının eşler arası HTTP bağlantıları yapmasına izin verecek mi?


100

Merkezi bir sunucunun yardımıyla aynı web uygulamasının diğer kullanıcılarıyla doğrudan bağlantılar oluşturabilecek bir web uygulaması oluşturmak mümkün müdür? UDP delme işlemine benzer bir işlem hayal ediyorum.

HTML5'teki yeni WebSockets API'sini okudum, ancak tam çift yönlü bağlantı başlamadan önce WS uyumlu bir sunucuyla bağlantı kurmanız gerekiyor gibi görünüyor. Bir sunucunun yalnızca ilk el sıkışmasına dahil olduğu, istemciler arasında doğrudan bağlantı kurma süreci hakkında daha fazla düşünüyorum .

NOT: Java uygulamaları sayılmaz. Yalnızca standart tarayıcı teknolojileriyle ilgileniyorum.


Yanıtlar:


109

Akıllı tahminler yerine, işte bilinçli bir cevap:

HTML 5, javascript'ten eşler arası bağlantılara izin vermeyi planlamaktadır, ancak bu bağlantılar RAW TCP OLMAYACAKTIR.

Spesifikasyonun tamamı şurada bulunabilir: http://dev.w3.org/html5/websockets/ adresinde

jrh

DÜZENLEME: eşler arası bağlantılara özel referansla şu bağlantılara göz atın:

Yeteneklerin hala görüşülmekte olduğunu belirtmek önemlidir. "Yerel sohbet" web uygulamaları oluşturabilmek güzel olacak :)

jrh


45
+1 => "Akıllı tahminler yerine, burada bilinçli bir cevap var"
Ionuț G. Stan

2
WebSocket HERHANGİ bir ana bilgisayara bağlanmaya izin veriyor mu? Spesifikasyonun yalnızca sunucu dediğine inanıyorum.
hegemon

4
Web Yuvaları artık HTML5'in bir parçası değil, bağımsız bir özelliktir.
Sergey Ilinsky

8
WebSocket'ler eşler arası değildir - hala istemciden sunucuya olurlar ve tarayıcılar sunucunun yarısını uygulamaz.
Alnitak

4
webSockets eşler arası bir şey yapmaz, ancak daha yeni bir özellik olan WebRTC bunun için tasarlanmıştır.
Eric Mill

29

GÜNCELLEME 10/17/2012: Bu işlevsellik artık Chrome Stable v22'de mevcuttur. Bu işlevi Chrome'da kullanmak için, chrome: // flags'de iki bayrak etkinleştirilmelidir:

  • MediaStream'i etkinleştirin
  • PeerConnection'ı etkinleştir

Ardından demoyu denemek için AppRTC Demo Sayfasını ziyaret edebilirsiniz . WebRTC'ye bakın - Demoları Çalıştırma akran işlevselliği to peer kullanmak için Chrome'u kurma ve cihaz yakalama etkinleştirme hakkında daha ayrıntılı talimatlar için sayfa.


GÜNCELLEME: Ericcson Labs mühendisleri, HTML5 Peer to Peer Konuşma Videosu yapan bir WebKit yapısında bir kavram kanıtı var .

Bloglarında, teknolojinin nasıl çalışacağına dair şemalar ve açıklamaların yanı sıra, işleyen teknolojiye dair gösteriler var.

Bunu sağlamlaştırmak ve WebKit deposuna bağlanmak için çalışıyorlar.


Bunun WebKit'te olmasının ne kadar süreceğini tahmin ediyorsunuz?
Alistair

Bilmiyorum. Ericcson ile kontrol etmenizi öneririm. Bağlantı cevabımda. Forumlarında bunun ne zaman olacağı konusunda bilgi olabilir.
jmort253

Tarayıcı başına özel yapılandırma / bayrak ayarları gerektirmek, çalışan bir web standardı spesifikasyonunun parçası olmakla aynı şey değildir. Kutudan çıktığı haliyle HTML5, WebSockets veya WebRTC'de değilse, hack olmadan eşler arası yapamazsınız. Neyse ki WebRTC doğru yönde ilerliyor gibi görünüyor.
Beejor

11

Evet sonunda.

Bu yazı (2017) itibariyle, WebRTC artık çoğu modern tarayıcının standart bir parçası (kullanımda olanların yaklaşık% 70'i) ve multimedya akışına, eşler arası ve delik delmeye izin veriyor.

WebRTC için dokümanlar, örnek kod ve canlı örnekler html5rocks.com adresinde bulunabilir. .

Caniuse.com ve html5rocks.com'a göre , aşağıdaki tarayıcılar WebRTC'yi destekler:

Tam destek: Edge 14, Firefox 22, Firefox Android 55
Kısmi destek: Android Browser 56, Chrome 20, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC Browser Android 11.4
Future support ( Q3 2017): iOS 11 için Chrome, iOS 11 için Safari 11 ve OS X 10.11
Destek yok: IE, IE Mobile, Opera Mini

Safari 11 henüz piyasaya sürülmediğinden ve iOS 11 veya OS X 10.11 gerektirdiğinden, WebRTC'nin doygunluk oranı Apple cihazlarda sınırlıdır. Geçmiş yükseltme trendlerinden yola çıkarak, WebRTC, 2018 yılına kadar iOS cihazların yaklaşık% 75'inde ve 2020'de% 100'ünde mevcut olmalıdır.


4

Bunun yanıltıcı olmasının birkaç nedeni vardır:

  1. Güvenlik duvarları (yalnızca düz NAT'ler bile) bu tür bir bağlantıyı HTTP'den bile çok daha düşük bir protokol katmanında zorlaştırır. BT güvenlik şapkam takılıyken, bu, yalnızca bir web sitesini ziyaret ederek bir makinede rastgele bağlantı noktaları açmanın harika bir yolu gibi görünüyor - ve bu nedenle neredeyse tüm kurumsal BT sistemleri tarafından agresif bir şekilde engellenir.
  2. HTTP, doğası gereği bir istemci-sunucu protokolüdür. Uzun yoklama (ve birkaç başka teknik) kullanarak çift yönlü iletişimi simüle etmek oldukça kolay olsa da, özellikle verimli değildir.
  3. Bu, XSS saldırıları için büyük bir boşluk açar.

WebSockets, bu sorunlardan ikincisini çözmek için tasarlanmıştır, ancak (kasıtlı olarak beklediğim) diğer ikisini çözmez. HTML5 spesifikasyonunda eşler arası hakkında konuştuklarında, bir istemci ile diğeri arasında değil, sunucu ve istemci arasındaki tam çift yönlü iletişimden bahsediyorlar.

Bununla birlikte, tüm iletişimin yine de sunucu üzerinden yapılması gerekmesi koşuluyla, web soketlerinin üzerine uygun bir ağ yığını uygulamak basit olacaktır. Bunun uzun yoklama kullanarak yapıldığını gördüm (Uni'deki bir arkadaşım uzun yoklama kullanarak tam bir TCP / IP yığını yazdı).


P2P, istemci-sunucu değildir; birincisi trafiği eşler arasında taşır, ikincisi onu sunucu üzerinden bir veya daha fazla istemciye taşır. P2P'nin ana yararı, bir sunucunun bir eşleştirici görevi görürken, istemciler arasında yoğun trafik giderken (bu, gizlilik ve bant genişliği için bir nimettir) olmasıdır.
Beejor

0

I second harshath.jr: Bir dizin görevi gören bir sunucunuz olabilir (bağlı her bir ajanın "kökenlerini" açığa çıkarır; orijin, draft-abarth-origin'de olduğu gibi şema + ana bilgisayar + bağlantı noktasıdır , şema "ws" şeklindedir. veya "wss"). Daha sonra eşler arası WebSocket bağlantılarını başlatabilirsiniz; SOP sayesinde işleme alınmakta CORS . Elbette bu, her ajanın (yani tarayıcı) kendi WebSocket sunucusunu (à la Opera Unite) yerleştirmesi gerektiği anlamına gelir.

Bu arada, bunu XMPP / IRC / vb. Yolla yapın: eşler arası bağlantı yok, ancak mesajları bağlı aracılara iletmek için merkezi bir sunucuya (veya ağa!) WebSocket bağlantıları (sonunda belirli bir WebSocket kullanarak ") alt protokol ")

DÜZENLEME: Tüm bunların aslında HTML5 kapsamının dışında olduğuna dikkat edin (tüm bunlar bir zamanlar HTML5'in bir parçasıydı, ancak kendi özelliklerine ayrılmıştı)


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.