2010-12-07 15 views
9

Estoy trabajando en un POC para autoaprendizaje en el que quiero mantener mi usuario conectado en el patrón EN VIVO. Por ejemplo, un juego en el que 4 usuarios pueden jugar a la vez, aquí necesito mantener este usuario conectado a mi juego.¿Cuál es el mejor diseño/forma de mantener al usuario conectado?

M no es bueno en el tipo de programación Socket y me encanta hacerlo en Servicios. Lo que quiero saber es '¿Cuál es la mejor manera de hacer esto'. De acuerdo con mi Brain Storming inicial, he decidido usar SilverLight (en el navegador o fuera del navegador) como Front end [no tengo ningún problema en eso].

Me preocupa más en la parte de atrás. O hago un controlador o hago un servicio WCF o uso el servicio dúplex completo y uso el mecanismo de agrupamiento para eso. Como un pensamiento al azar vengo con una lógica de tipo Timer que se dispara cada después de 10 segundos a clientes finales y obtener estatus como

  • es que llegado su turno para rodar un dado

  • Home muchos usuarios la izquierda (en el caso si algunos de ellos izquierda)

  • Lo que están conectados estado del usuario en juego como hay puntos Score/ect y actualización
    vista juego de acuerdo con esto en su extremo

Por favor coloque sus mejores respuestas aquí que me ayudarán a aprender esto.

Un saludo y gracias de antemano

EDIT:

A partir Bounty, ya que necesito más comentarios.

FH

Respuesta

11

Fasih,

Desde HTTP no tiene estado, no se puede hacer la comunicación de 2 vías desde el código. Pero hay una solución alternativa si está usando AJAX. Como dijiste, el cronómetro es de una sola dirección. Otro se llama COMET o AJAX inverso.

Esto simula la comunicación bidireccional sin depender del temporizador. Para lograr esto, debe hacer una larga ejecución de llamadas AJAX al servidor, y la llamada solo se devuelve si hay un cambio para actualizar. Supongamos un escenario simple de chat web. 2 usuarios hacen largas llamadas AJAX al servidor, y ambos sondean el medio común (digamos DB), si el usuario1 envía un poco de texto, se actualizará y el usuario 2 esperará que la llamada AJAX recoja el texto y lo devuelva. Y de nuevo, ambos usuarios harán una llamada de larga duración para escucharse unos a otros.

Como ya decidió seguir adelante con Silverlight, puede usar el canal dúplex WCF para emular la comunicación bidireccional. Como expliqué anteriormente, no vaya con la lógica del temporizador. No es instantáneo si estás sondeando el servidor durante 10 segundos (cualquier cosa puede suceder en un juego en 10 segundos) y aumentará la carga del servidor si sondeas por cada segundo.

Así que evite la lógica del temporizador y use llamadas AJAX de larga ejecución.

Si busca opciones distintas de los canales dúplex WCF, HTML5 web sockets y COMET son otras formas de hacerlo.

mira esto post para navegadores compatibles con web socokets.

+0

buena respuesta. me gusta eso. De esto puedo hacer que mi propio Loon ejecute el mecanismo de llamada Ajax. Déjame verificarlo . actualizará – Singleton

+0

Acabo de leer su respuesta ahora ... mejor que la mía ... correcto que la carga del servidor será más si se usa el temporizador ... – Mahesh

+0

Amigo, dije que acabo de leer su respuesta ahora ... si lo hubiera leído no lo haría me he molestado en comentar lo que hice y dije que tu respuesta es mejor que la mía ... solo por el bien de la cortesía ... – Mahesh

1

Básicamente se trata de poder enviar datos al cliente desde el servidor. Así que estaba pensando en una arquitectura de editor de suscriptor, puede crear una cola (en una tabla db por ejemplo) en el servidor para cada uno de los usuarios que están conectados, y tener un ajax llamando a un servicio web que extraerá datos de la tabla .

Cada mensaje debe estar encapsulado como un comando para el cliente. De modo que puede usar diferentes mensajes para cada operación de los que el cliente es capaz. {Comando: pantalla, texto: "bla bla usuario ha iniciado sesión"} otro comando podría parecerse {comando: rolldice, texto: "tirar los dados"}

Déjame saber lo que piensa ...

Cuestiones relacionadas