71 votos

¿Cómo puedo hacer un navegador a otro (peer to peer) conexión?

¿Cómo puedo escribir un sitio web utilizando HTML5, CSS y JavaScript en el lado del cliente que va a permitir la conexión tcp/ip directa entre el cliente navegadores, una vez que se carga la página.

Necesito hacer esto para reducir la latencia, ya que el sitio es necesario que la entrada de uno de los usuarios para ser transmitidos a otro usuario tan pronto como sea posible para el envío de datos desde el cliente al Servidor y luego el cliente B no es una buena opción.

He leído los posts anteriores sobre este tema, pero no hubo solución de trabajo/ejemplos que he podido encontrar. Por lo que he leído la conexión directa entre los clientes pueden hacer uso de plugins como Silverlight, Java o Flash.

Hay alguna solución que no requiere plugins? Me gustaría usar solo JavaScript.

Gracias por las respuestas!

117voto

Dennis Puntos 1336

Aquí en Stackoverflow son varios los temas de P2P conexiones en los navegadores:

  1. Se HTML5 permiten a las aplicaciones web para hacer peer-to-peer conexiones HTTP?
  2. ¿Qué técnicas están disponibles para hacer P2P en el navegador?
  3. No Soporte HTML5 Peer-to-Peer (y no sólo WebSockets)
  4. Puede HTML5 Websockets conectar 2 clientes (navegadores) directamente sin utilizar un servidor (P2P)
  5. Es posible la creación de peer-to-peer conexiones en un navegador web?
  6. Hacer websockets permitir p2p (navegador) de la comunicación?
  7. HTML 5 Peer to Peer Video Posibilidades?
  8. Es WebRTC implementado en cualquiera de los navegadores?

Como se mencionó en la mayoría de los topicts, ambos de 2008 HTML5 borradores de trabajo tenían una sección de "Peer-to-Peer conexiones":

Desde el Borrador de Trabajo de W3C 12 de febrero de 2009, la sección de "Peer-to-Peer" conexiones de desaparecidos. Pero esta conexión P2P no se ha ido. Es de nuevo bajo el nombre de PeerConnection dentro de la WebRTC (Comunicación en Tiempo Real) especificaciones:

Desde el 31 de octubre de 2011, el W3C Editor del Proyecto es un funcionario de un borrador de Trabajo:

La única aplicación de la PeerConnection (UDP) existe en la modificación de WebKit por Ericsson laboratorios (Mayo de 2011), que está funcionando bastante bien. Algunos parches en WebKit ahora (Oct. 2011 -- ver las actualizaciones de abajo!):

Además, el WebRTC iniciativa es un proyecto de Google, Mozilla y Opera. Por lo tanto, ellos siguen la especificación de PeerConnection:

Probablemente Chrome (usa WebKit) será el primer gran explorador de apoyo WebRTC con PeerConnection:

Desde el 18 de enero de 2012, Chrome es el apoyo a WebRTC así. Puede ser utiliza en el Dev channel (Windows, OSX, Linux) y el Canary build (Windows y OSX) por la habilitación de bajo chrome://flags. Sólo se admite sólo MediaStream como de Vídeo y de audio y puede ser probado con varios Demos. La transferencia de datos de la aplicación como String/ArrayBuffer/... no se admite hasta ahora.

Desde el 16 de Marzo de 2012, el WebRTC Editor del Proyecto que separa a un "Peer-to-peer de Datos de la API" para enviar y recibir genérico de datos de la aplicación (String, ArrayBuffer y Blob). Cromo quiere implementar la API de Datos de pronto (10 de abril de 2012).

El 3 de abril de Mozilla publicó un primer ejemplo de trabajo en WebRTC para Firefox así.

DataChannel está prevista para la versión de 25 de Chrome, detrás de una bandera, mientras tanto puede ser probado en Firefox Nightly/Aurora (12 de diciembre de 2012):

7voto

Emil Ivanov Puntos 18594

Voy a tener que decepcionarte - este momento no es posible con sólo JavaScript. Websockets (y Socket.IO) permiten una conexión de casquillo entre el cliente y el servidor, pero no entre los clientes. Su opción es un plugin - ya sea Flash, Silverlight, Java o hecho a medida.

Lo que puedes hacer es uso socket.io y emular que al escribir un servidor proxy simple.

3voto

Me gustaría llamar su atención sobre el hecho de que la mayoría de los usuarios de hoy en día están detrás de NAT o cortafuegos, y esto significa que no se puede establecer fácilmente conexiones entrantes a la computadora del usuario. Así que su idea sería (si alguna vez es posible) trabajar sólo en algunos casos y traerá complejidad adicional a su solución. Así sistema cliente-servidor con conexión posiblemente persistente (utilizando websockets o socket.io) es una mejor opción.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X