Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Programando Juegos Sociales en Línea (Parte 8) Agregando Node.Js

Anterior Post

En el anterior post, mostré el procesamiento del juego en el  Windows Azure Toolkit for Social Gaming (versión 1.1.1, hay una nueva 1.2.0 pero aún en beta). Ahora, es tiempo de ver cómo agregar Node.js como servidor de juego a nuestro simple juego de Ta Te Ti.

Vean que todo el código client de Game Service es agnóstico del juego, es decir, no depende del juego que se está implementando. Y vean también que ese Game Service en javascript puede ser cambiado para usar otros servicios. En este post, veremos cómo cambiar el procesamiento de las jugadas para usar una instancia del servidor Node.js.

Primero, bajarse el código a agregar de mi GitHub:

https://github.com/ajlopez/SocialGamingExtensions

Entonces:

1 – Bajar e instalar el Windows Azure Toolkit for Social Gaming versión 1.1.1, desde:

http://watgames.codeplex.com/releases/view/77091

1 – Instalar Node.js para Windows, desde http://nodejs.org/#download

2 – Cambiar al subdirectorio server de mi código, y ejecutar el comando:

npm install socket.io

La librería socket.io se bajará e instalará en el subdirectorio node_modules:

Vean que baja bastante:

3 – Iniciar el servidor de node:

node gameex.js

El servidor comienza a escuchar:

4 – Copiar el directorio client de mi código al directorio del proyecto SocialGaming.Web. Los archivos Web.config, BaseController.cs, TicTacToeController.cs serán reemplazadas. Hay nuevos archivos: Scripts\game\GameServiceNodeJs.js, Areas\Samples\Views\TicTacToe\NodeJs.cshtml.

5 – Abrir la solución de Microsoft en el Visual Studio 2010 (run as administrator) y agregar esos nuevos archivos al proyecto SocialGaming.Web. El nuevo GameService a usar para Node.js:

La nueva vista TicTacToe que usa al Node.js:

La nueva acción en el controlador TicTacToe:

Y la nueva entrada en el web.config:

El reemplazado BaseController lee esa nueva configuración, que queda disponible para ser usada por la vista:

6 – Iniciar la aplicación, debería ejecurtarse como http://127.0.0.1:81 (en puerta 81) para ser aceptada por la seguridad federada configurada en el portal de Access Control Service.

7 – Navegar a /Samples/TicTacToe/NodeJs. Ver la URL de invitación:

8 – El cliente se conecta con el servidor de Node.js. Dependiendo de las capacidades del cliente, socket.io usará WebSockets o XHR long polling:

 

9 – Abrir un nuevo explorador, en una sesión privada, y navegar a la URL provista en el paso 7

10 – Hay dos jugadores. El de la derecha (el invitado) jugó en la celda del top izquierdo. El primer jugador (el de la izquierda) recibe la nueva movida y actualiza su tablero.

11 – Ver la consola del servidor Node.js: la movida fue recibida y enviada a todos los participantes de esta instacia de juego:

Bien! Trabajo para el hogar: agreguen el Node.js para publicarse en un worker role. Vean el post de @ntotten NodeJS on Windows Azure).

Próximos temas: explicar en detalle el código del servidor que ejecuta Node.js (por ejemplo, soporta sockets TCP además de socket.io; de esta manera podemos programar un cliente en otras plataformas, desde Silverlight a IPhone a Android, sin depender de tener que usar una librería Socket.io en esos clientes).

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Published Thu, Jan 12 2012 19:36 by lopez

Comments

# Resoluciones del Nuevo Mes: Febrero 2012@ Thursday, February 02, 2012 5:23 AM

Primero, una revisión de mis resoluciones de Enero : - Implementar Id en los nodos de AjCoRe (simple

Angel "Java" Lopez

# Esos Raros Lenguajes Nuevos: Javascript/Node, Scala, Erlang, Clojure, Ruby, Python@ Saturday, March 03, 2012 12:22 PM

El jueves pasado tuve el gusto de dar una charla sobre lenguajes, en el Microsoft User Group de Argentina

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: