caracteristicas de javascript
¿Permitirá HTML5 que las aplicaciones web establezcan conexiones HTTP punto a punto? (6)
Sí, finalmente.
Al escribir estas líneas (2017), WebRTC ahora es una parte estándar de la mayoría de los navegadores modernos (alrededor del 70% de los que se usan), y permite la transmisión de multimedia, peer-to-peer y hole-punching.
Los documentos, el código de muestra y los ejemplos en vivo de WebRTC se pueden encontrar en html5rocks.com .
De acuerdo con caniuse.com y html5rocks.com , los siguientes navegadores son compatibles con 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 es limitada en dispositivos Apple, ya que Safari 11 aún no se ha lanzado y requiere iOS 11 u OS X 10.11. A pesar de proyectarse desde las últimas tendencias de actualización, WebRTC debería estar disponible en alrededor del 75% de los dispositivos iOS para 2018, y 100% para 2020.
¿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 al de perforar UDP.
He leído sobre la nueva API de WebSockets en HTML5, pero parece que debes iniciar la conexión con un servidor compatible con WS antes de que pueda comenzar la conexión dúplex completa. Estoy pensando más acerca de un proceso para establecer conexiones directas entre clientes, con un servidor involucrado solo en el saludo inicial.
NOTA: los applets de Java no cuentan. Estoy interesado solo en las tecnologías de navegador estándar.
En lugar de conjeturas inteligentes, aquí hay una respuesta informada:
HTML 5 planea permitir conexiones peer-to-peer desde javascript, pero estas conexiones NO SERÁN TCP SIN PROCESAR.
La especificación completa se puede encontrar en http://dev.w3.org/html5/websockets/
jrh
EDITAR: con referencia específica a las conexiones de igual a igual, revisa estos enlaces:
- Con respecto a las conexiones de igual a igual: http://www.w3.org/TR/2008/WD-html5-20080122/#peer-to-peer
- Con respecto a las conexiones de transmisión a la red local: http://www.w3.org/TR/2008/WD-html5-20080122/#broadcast
- En cuanto a las conexiones TCP (en el protocolo codificado): http://www.w3.org/TR/2008/WD-html5-20080122/#tcp-connections
- Complete la especificación propuesta: http://www.w3.org/TR/2008/WD-html5-20080122/#network
Es importante tener en cuenta que las capacidades aún se están negociando. Sería bueno poder crear aplicaciones web de "chat local" :)
jrh
En segundo lugar, harshath.jr: es muy posible que un servidor actúe como un directorio (exponiendo los "orígenes" de cada agente conectado, cuyo origen es scheme + host + port como en draft-abarth-origin , con el esquema siendo "ws" o "wss"). Luego puede iniciar conexiones WebSocket punto a punto; el SOP está siendo trabajado gracias a CORS . Por supuesto, esto significa que cada agente (es decir, el navegador) debería incrustar su propio servidor WebSocket (à la Opera Unite).
Mientras tanto, hazlo en XMPP / IRC / etc.: sin conexión de igual a igual pero con conexiones WebSocket a un servidor central (¡o red!) Para pasar mensajes a los agentes conectados (eventualmente usando un WebSocket específico " subprotocolo ")
EDITAR: tenga en cuenta que todo esto está realmente fuera del alcance de HTML5 (todas esas cosas fueron parte de HTML5 pero se han dividido en sus propias especificaciones)
Hay una serie de razones por las que esto sería complicado:
- Los cortafuegos (incluso los NAT sencillos) 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, esta parece una forma maravillosa de abrir puertos arbitrarios en una máquina, simplemente visitando un sitio web, por lo que sería virtualmente bloqueado por prácticamente todos los sistemas de TI corporativos.
- HTTP es intrínsecamente un protocolo de cliente-servidor. Si bien es razonablemente fácil simular comunicaciones dúplex utilizando encuestas largas (así como un par de otras técnicas), no es particularmente eficiente.
- 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 las especificaciones de HTML5, hablan de comunicaciones de dúplex completo entre el servidor y el cliente, no entre un cliente y otro.
Sin embargo, sería simple implementar una pila de red adecuada sobre los websockets, con la condición de que toda la comunicación tenga que hacerse a través del servidor. He visto esto hecho usando largas encuestas (un amigo mío en Uni escribió una pila completa de TCP / IP usando largas encuestas).
La idea de Web Sockets era resolver los problemas con Firewalls y proxies http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket
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: // flags:
- Habilitar MediaStream
- Habilitar PeerConnection
Luego puede visitar la página de demostración de AppRTC para probar la demostración. Consulte WebRTC - Ejecución de la página de Demos para obtener instrucciones más detalladas sobre la configuración de Chrome para usar la funcionalidad punto a punto y habilitar la captura del dispositivo.
ACTUALIZACIÓN: Los ingenieros de Ericcson Labs tienen una prueba de concepto en una compilación de WebKit que realiza 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 lograr esto estabilizado y comprometido con el repositorio de WebKit.