2012-04-22 16 views
6

Quería permitir a los usuarios jugar p2p en un juego de varios jugadores que estoy desarrollando, pero para poder hacer eso, JavaScript necesita poder crear un servidor de socket en el navegador. ¿Es eso posible? No conozco ninguna API que permita a los clientes conectarse a otros clientes en javascript. ¿Hay alguna otra manera? ¿Como usar un elemento flash oculto?Socket Server en Javascript (en navegadores)?

Estoy pidiendo algo que no requiere un servidor en absoluto. Los paquetes tienen que viajar desde el cliente al cliente directamente

+0

Eche un vistazo a [websockets] (http://dev.w3.org/html5/websockets/) ([tutorial] (http://net.tutsplus.com/tutorials/javascript-ajax/start-using) -html5-websockets-hoy /)). De todos modos, necesitará un servidor de socket para centralizar las comunicaciones entre los clientes. Además: el soporte del navegador aún es limitado. – bfavaretto

+0

Sí, pero necesito p2p, específicamente sin un servidor centralizado. –

+0

Bueno, eso simplemente no es posible. – bfavaretto

Respuesta

0

Si bien esto es una cuestión de compras, me vería en APE

http://www.ape-project.org/

Por lo menos se puede consultar cómo se han estructurado que .

+0

Requiere un servidor. No es lo que quiero –

0

Para implementar un juego de este tipo, su cliente JavaScript debe comunicarse con el servidor. El servidor luego ejecuta la lógica del juego y envía el resultado nuevamente al cliente.

  • JavaScript recibe la entrada del usuario y la envía al servidor
  • Server garantiza que la entrada es válida (para evitar las trampas) y actualiza el juego con la nueva entrada
  • Server envía periódicamente el estado del juego de JavaScript (ya sea mediante un sondeo largo o haciendo que JS lo solicite en un intervalo).

Básicamente, nunca confíes en nada proveniente de JavaScript, ya que es extremadamente fácil de modificar. Todo debe hacerse en el lado del servidor.

+0

Usted no respondió mi pregunta en absoluto. Necesito peer-to-peer, así de simple. Desarrollé suficientes juegos de jugadores múltiples centralizados (incluidos un RTS y un MMORPG) para saber lo que ya publicaste. Apenas leíste mi pregunta. –

+0

"su cliente de JavaScript ** debe ** comunicarse con el servidor". Lo que significa que no puede hacer p2p. En absoluto. Imagínese si pudiera, todo lo que hace está repentinamente en riesgo de ser comunicado a otra persona ... –

6

En resumen, no, p2p en un navegador no es posible.

Lo más cerca que se puede obtener es el uso de NodeJS (por potencialmente p2p JS) o un servidor centralizado (o varios servidores) y websockets (para tomas en un navegador)

4

pregunta interesante, pero probablemente un duplicado:

que sé con certeza que esto no se puede hacer uso de JavaScript (en todos los navegadores). De acuerdo con another answer en Stackoverflow en el tema anterior, puede hacer esto usando rtmfp-api.

Este proyecto exponer protocolo RTMFP (proporcionado por la versión de Flash 10) a Javascript aplicación throught un applet de destello oculto. El protocolo permite que múltiples clientes se comuniquen directamente. Consulte las referencias para para obtener más detalles sobre el protocolo.

Mirando rápidamente en el lugar todavía se necesita un -server rtmfpUrl en el medio, que entiendo totalmente porque los clientes tienen que ser capaces de encontrar uno al otro (PI). Pero supongo que después de eso será p2p. Haciendo una búsqueda rápida también encontré open-source rtmfp-server(s).

No he probado esto por mi cuenta, pero quizás esto lo ayude a lograr su objetivo.

Algunos otros enlaces:

4

Esta pregunta es viejo, pero ahora se puede dar una respuesta: sí, por fin hay una manera de hacer la comunicación P2P entre los navegadores! Gracias a la nueva norma WebRTC, los navegadores modernos tienen soporte para Canales de datos, algo mucho más potente que WebSockets.

Tome un vistazo aquí:

WebRTC Data Channels

Ejemplo línea: pan de plátano 3D es un juego de disparos en primera persona compilado a JS + WebGL, el uso de canales de datos de WebRTC en el modo multijugador:

BananaBread 3D Multiplayer online fps game

0

Es posible ir sin servidor con Flash. Esto es factible con las capacidades de Peer to Peer de Adobe Flash. Una vez escribí un chat de igual a igual. El inconveniente es que Actionscript es un lenguaje en extinción y es posible que no se soporte mucho en el futuro.

Aquí está la clase raw. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetGroup.html

Aquí hay recursos si no quiere escribir el suyo. http://www.as3gamegears.com/category/multiplayer/

Si desea una opción de servidor que sea liviana en el lado del servidor. Pruebe esta extensión node.js.
http://socket.io/

Recomiendo el uso de un servidor de socket java de algún tipo. Electroserver solía ser uno de los líderes en el campo, tenía soporte de Unity y era escalable a cientos de miles. Aunque creo que han caído en tiempos difíciles. El sitio Electroserver no ha sido accesible por algún tiempo. Sé que hay otros por ahí, pero Electroserver es el único que he usado.

Cuestiones relacionadas