¿HTML5 permitirá que las aplicaciones web realicen conexiones HTTP peer-to-peer?

StackOverflow https://stackoverflow.com/questions/1032006

  •  06-07-2019
  •  | 
  •  

Pregunta

¿Es posible crear una aplicación web que, con la ayuda de un servidor central, pueda crear conexiones directas con otros usuarios de la misma aplicación web? Me estoy imaginando un proceso similar a la perforación de agujeros UDP.

He leído acerca de la nueva API de WebSockets en HTML5, pero parece que debe iniciar la conexión con un servidor compatible con WS antes de que pueda comenzar la conexión totalmente dúplex. Estoy pensando más en un proceso para hacer conexiones directas entre clientes, con un servidor involucrado solo en el apretón de manos inicial.

NOTA: los applets de Java no cuentan. Solo me interesan las tecnologías de navegador estándar.

¿Fue útil?

Solución

En lugar de conjeturas inteligentes, aquí hay una respuesta informada:

HTML 5 planea permitir conexiones punto a punto desde javascript, pero estas conexiones NO SERÁN TCP CRUDO.

La especificación completa se puede encontrar en http://dev.w3.org/html5/websockets/

jrh

EDITAR: con referencia específica a conexiones punto a punto, consulte estos enlaces:

Es importante tener en cuenta que las capacidades aún se están negociando. Será bueno poder crear "chat local" aplicaciones web :)

jrh

Otros consejos

ACTUALIZACIÓN 17/10/2012: esta funcionalidad ahora existe en Chrome Stable v22. Para usar esta funcionalidad en Chrome, uno debe habilitar dos banderas en Chrome: // banderas:

  • Habilitar MediaStream
  • Habilitar PeerConnection

Luego puede visitar la Página de demostración de AppRTC para probar la demostración. Consulte la WebRTC - Ejecutando la página Demos para obtener instrucciones más detalladas sobre cómo configurar Chrome para usar la funcionalidad de igual a igual y habilitando la captura del dispositivo.


ACTUALIZACIÓN: Los ingenieros de Ericcson Labs tienen una prueba de concepto en una compilación de WebKit que hace Video conversacional punto a punto HTML5 .

Tienen demostraciones en su blog de la tecnología en acción, así como diagramas y explicaciones sobre cómo funcionará la tecnología.

Están trabajando para estabilizarlo y comprometerlo con el repositorio de WebKit.

Sí, finalmente.

Al momento de escribir este artículo (2017), WebRTC ahora es una parte estándar de la mayoría de los navegadores modernos (alrededor del 70% de los que están en uso) y permite la transmisión multimedia, peer-to-peer y perforaciones.

Documentos, código de muestra y ejemplos en vivo para WebRTC se pueden encontrar en html5rocks.com .

De acuerdo a caniuse.com y html5rocks.com , los siguientes navegadores admiten WebRTC:

Soporte completo: Edge 14, Firefox 22, Firefox Android 55
Soporte parcial: 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
Soporte futuro (Q3 2017): Chrome para iOS 11, Safari 11 para iOS 11 y OS X 10.11
Sin soporte: IE, IE Mobile, Opera Mini

La tasa de saturación de WebRTC está limitada en los dispositivos Apple, ya que Safari 11 aún no se ha lanzado y requiere iOS 11 u OS X 10.11. Aunque se proyecta a partir de las tendencias de actualización anteriores, WebRTC debería estar disponible en aproximadamente el 75% de los dispositivos iOS para 2018 y el 100% para 2020.

Hay varias razones por las cuales esto sería complicado:

  1. Los cortafuegos (incluso NAT simples) dificultarían este tipo de conexión en una capa de protocolo mucho más baja que incluso HTTP. Con mi sombrero de seguridad de TI puesto, esta parece una forma maravillosa de abrir puertos arbitrarios en una máquina, simplemente visitando un sitio web, por lo que prácticamente todos los sistemas de TI corporativos lo bloquearían agresivamente.
  2. HTTP es inherentemente un protocolo cliente-servidor. Si bien es razonablemente fácil simular comunicaciones dúplex utilizando sondeos largos (así como algunas otras técnicas), no es particularmente eficiente.
  3. Esto abriría un gran agujero para los ataques XSS.

WebSockets está diseñado para resolver el segundo de estos problemas, pero (deliberadamente, espero) no los otros dos. Cuando hablan de peer-to-peer en la especificación HTML5, están hablando de comunicaciones full duplex entre el servidor y el cliente, no entre un cliente y otro.

Sin embargo, sería sencillo implementar una pila de red adecuada en la parte superior de los sockets web, con la condición de que toda la comunicación tuviera que realizarse a través del servidor. He visto que esto se hace usando encuestas largas (un amigo mío en Uni escribió una pila TCP / IP completa usando encuestas largas).

Segundo harshath.jr: bien podría tener un servidor que actúe como un directorio (exponiendo " orígenes " de cada agente conectado; origen siendo esquema + host + puerto como en draft-abarth-origin , siendo el esquema" ws "o" wss "). Luego, podría iniciar conexiones WebSocket punto a punto; SOP se trabajó gracias a CORS . Por supuesto, esto significa que cada agente (es decir, navegador) tendría que incrustar su propio servidor WebSocket (& # 224; la Opera Unite).

Mientras tanto, hágalo de la manera XMPP / IRC / etc.: sin conexión peer-to-peer pero con conexiones WebSocket a un servidor central (o red) para pasar mensajes a los agentes conectados (eventualmente usando algunos WebSocket específico " subprotocolo ")

EDITAR: tenga en cuenta que todo esto está fuera del alcance de HTML5 (todas esas cosas fueron una vez parte de HTML5 pero se han dividido en sus propias especificaciones)

La idea general de Web Sockets era resolver los problemas con firewalls y servidores proxy http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top