Interface WEB para Xadrez - Teste

Equipe de Implementação da interface Web - C3SL 2007
Última atualização - Tue Jun 3 10:56:44 2008

1. Introdução

Esta página contém a documentação, explicações e esquemas que demonstram o que foi usado na implementação da interface Web para o projeto de Xadrez.

Houve reuniões e discussões sobre como montar uma arquitetura geral para interagir com a interface e será dado uma explicação breve sobre a arquitetura geral de como tudo está interligado. Após essa apresentação será explicado o que cada componente da arquitetura faz.

Por ultimo será explicado, tentando detalhar o máximo possível, a interface. Explicações de como foi implementado, os algoritmos, estrutura de dados, a organização dos diretórios, a arquitetura por trás de toda interface, os componentes dessa arquitetura, etc.


2. Arquitetura Geral

Nesse tópico será apresentado a arquitetura geral que foi escolhido para fazer a organização toda do Projeto de Xadrez - C3SL 2007.

2.1. Servidor Jabber

Para facilitar a comunicação entre usuários da interface usamos o protocolo Jabber (baseado em XMPP, implementado pelo eJabberd) para troca de mensagens. Como pode ser observado no diagrama acima, utilizamos AJAX para as trocas de mensagens XMPP entre a interface e o servidor Jabber.

2.2. BOSH

É a sigla para Bidirectional-streams Over Synchronous HTTP. O AJAX não consegue falar diretamente como servidor Jabber. Logo, o bosh é um intermediário, que entrega as mensagens da interface para o Jabber.

2.3. Servidor de Xadrez

Este servidor foi dividido em diferentes componentes:

A comunicação entre a interface e o servidor também é baseada em troca de mensagens XMPP, e todas elas passam pelo servidor Jabber, que as redirecionam para a interface/servidor xadrez.


3. Interface Web

A Interface Web é a parte que interage com o usuário. É uma página baseada em requisitos levatados e design elaborados para usuários iniciantes com o objetivo de ensinar a jogar xadrez.

A implementação foi feita utilizado a linguagem web Javascript. Como já tido anteriormente, a comunicação com as demais entidades é feito usando AJAX. Para mostrar os dados no navegador de forma elegante e amigável foi utilizado estilos CSS.

3.1. Arquitetura da Interface

A arquitetura da interface foi divido entre a interface propriamente dita, controladores, parser e o BOSH.

OBS: Não confundir Interface WEB com interface. A Interface WEB é toda a estrutura organizada para receber os dados do Jabber e mostrar no navegador. A interface é a parte responsável por mostrar os dados dentro da interface WEB.

3.2. Diretórios e Arquivos

A partir do diretório raíz, a estrutura de diretórios e arquivos fica da seguinte forma:

css
Contém todos os arquivos de estilos usados na interface

images
Contém todos os arquivos de imagens usados na interface. Bordas dos divs, imagens de status dos jogadores, peças e casas do tabuleiro, imagens dos botões, etc.

scripts
Contém todos os scripts usados na implementação da interface. Todos os códigos de conexão, parsers, controladores e códigos para mostrar os dados na página web estão localizados nesse diretório. Para uma melhor organização, o diretório foi divido em sub-diretórios.

doc
Contém toda a documentação em feito em txt2tags, convertido para html.

A descrição das funções nos arquivos pode ser encontrada em ...


4. Conexão

Para obter acesso a todas as funcionalidades, uma conexão é feita com o servidor Jabber e em seguida uma presença é mandada para o servidor de xadrez. Como já foi descrito, a página se comunica com o servidor Jabber através de um servidor intermediário, BOSH.

A conexão com o servidor Jabber é feita de acordo com a especificação do protocolo XMPP, descrita em RFC3920. As funções utilizadas para a conexão, com Jabber e o servidor de xadrez, estão em scripts/connection/connection.js.


5. Estrutura de dados

A solução escolhida para manter todos os dados necessários foi uma estrutura de dados global, DATA. Ao carregar a interface ela é inicializada com constantes lidas do arquivo de configuração (em /scripts/data/consts.js) e também aloca todos os objetos usados para guardar os dados.

5.1. Atributos da estrutura

Alguns dos atributos listados abaixos são também listas de objetos, contendo outros atributos.


6. Servidores

Aqui será apresentado os servidores, como eles fazem a comunicação com os servidores e os protocolos.

6.1. Servidor Jabber

6.2. Servidor de Xadrez

6.3. Servidor de Notícias