Página de Edward Martin

Início Atualizações Dados pessoais Programas Trabalhos Textos Links

Chat acessível

Nota: Essa página destina-se a desenvolvedores

Quando não se pode ler com os olhos as mensagens de um chat, provavelmente a forma mais simples é usar um programa chamado Papovox. O Papovox faz parte do Projeto Dosvox (vide links). Na ausência dele, o Telnet (seguir o protocolo do Telnet) é uma boa opção.

Infelizmente o Papovox segue um protocolo próprio, um pouco diferente do HTTP, por isso a implementação pode ser um pouco trabalhosa. Ele é está mais próximo do Telnet que do HTTP.

O chat da rede SACI consegue ser bastante acessível, pois possui suporte ao Papovox e mesmo a Telnet. Para quem enxerga, costuma ser mais conveniente entrar via navegador, por isso ele também possui suporte a navegador.

Além do bate-papo da rede SACI existem outros programas que entendem o protocolo do Papovox.

Um deles é o ServMud
Código fonte .tar.gz ou Código fonte .zip
Esse é o código fonte, em C++.

Também é possível dar uma olhada no Sitiovox ou no próprio Papovox, que vem com o projeto Dosvox. O código fonte (em Pascal) costuma vir junto.
Projeto Dosvox

Protocolo de comunicação

Caracteres

Neste texto os caracteres são escritos como na linguagem C. Exemplo: caracter 'A' tem código ASCII 65, que é 0x41 (em hexadecimal).

Caracteres especiais

CR, caracter 0x0D, significa "Carriage Return", ou Retorno do carro, faz o cursor voltar para o início do texto LF, caracter 0x0A, significa "Line Feed", e faz o cursor ir para a próxima linha.

Portanto, CRLF são os caracteres 0x0D e 0x0A. Porém, se for enviado só CR ou só LF, ao invés de CRLF, o servidor também entende a mensagem.

Obs.: Nos arquivos .TXT criados via DOS/Windows as linhas terminam com CRLF, e nos textos criados via UNIX, as linhas terminam com LF.

Protocolo Papovox

  1. É feita uma conexão com o servidor, na porta 1963.
  2. O servidor manda uma mensagem que começa com o caracter '+' (se OK) ou '-' (se erro) e termina com CRLF. Se a mensagem começar com '-', a conexão será encerrada.
  3. O cliente manda uma mensagem qualquer (não nula) terminada com CRLF
  4. O servidor manda uma mensagem que começa com o caracter '+' (se OK) ou '-' (se erro) e termina com CRLF.

A partir daqui todas as mensagens transmitidas e recebidas têm o seguinte formato:

Obs.: O tamanho da mensagem é o byte mais significativo vezes 256 (ou 0x100) somando ao byte menos significativo.

Exemplo:
  1. Cliente conecta
  2. Servidor manda mensagem contendo os caracteres:
    • 0x43 '+' (aceitei conexão)
    • 0x4F 'O'
    • 0x4B 'K;'
    • 0x0D CR
    • 0x0A LF
  3. Cliente responde:
    • 0x4C 'L' (nome do usuário, Léo neste caso)
    • 0xE9 'é'
    • 0x6F 'o'
    • 0x0D CR
    • 0x0A LF
  4. Servidor responde:
    • 0x43 '+' (aceitei conexão)
    • 0x4F 'O'
    • 0x4B 'K;'
    • 0x0D CR
    • 0x0A LF
  5. Servidor espera um tempo e manda mensagens, exemplo:
    • 0x01 (tipo de mensagem)
    • 0x05 Tamanho (menos significativo)
    • 0x00 Tamanho (mais significativo)
    • 0x4E 'N'
    • 0x6F 'o'
    • 0x6D 'm'
    • 0x65 'e'
    • 0x3F '?'
    • Obs.: Tamanho desta mensagem é 5, porque 0*256+5=5
  6. Cliente:
    • 0x01 tipo de mensagem
    • 0x03 tamanho (menos)
    • 0x00 tamanho (mais)
    • 0x4C 'L'
    • 0xE9 'é'
    • 0x6F 'o'

Usando Telnet com o servidor

  1. É feita uma conexão com a porta do servidor
  2. O servidor manda uma mensagem que começa com o caracter '+' e
  3. termina com CRLF
  4. O cliente manda os caracteres CRLF
  5. O servidor manda uma mensagem que começa com o caracter '-' e termina com CRLF

A partir daqui todas as mensagens transmitidas terminam com CRLF, e todas as mensagens recebidas pelo servidor devem terminar com um dos 3:

Exemplo:
  1. Cliente conecta
  2. Servidor manda mensagem contendo os caracteres:
    • 0x43 '+' (aceitei conexão)
    • 0x4F 'O'
    • 0x4B 'K;'
    • 0x0D CR
    • 0x0A LF
  3. Cliente responde:
    • 0x0D CR
    • 0x0A LF
  4. Servidor responde:
    • 0x43 '-' (entrando via telnet)
    • 0x4F 'O'
    • 0x4B 'K;'
    • 0x0D CR
    • 0x0A LF
  5. Servidor espera um tempo e manda mensagens, exemplo:
    • 0x4E 'N'
    • 0x6F 'o'
    • 0x6D 'm'
    • 0x65 'e'
    • 0x3F '?'
    • 0x0D CR
    • 0x0A LF
  6. Cliente:
    • 0x4C 'L'
    • 0xE9 'é'
    • 0x6F 'o'
    • 0x0D CR
    • 0x0A LF

Comandos mais comuns do chat da rede SACI

Todos os comandos começam com uma /. As opções de ajuda começam com uma ?. Quando o usuário digita algo que não começa com /, nem com ?, o chat envia a mensagem para todos que estiverem na mesma sala.

Para mudar de sala escreve-se / seguido do nome da sala. Exemplo:

/teste

Para escrever reservadamente escreve-se / seguido do apelido e a mensagem. Exemplo:

/fulano bom dia

Para saber quem está na sala escreve-se:

?quem

E para saber quantos usuários estão nas salas abertas, escreve-se:

?quantos
Voltar Voltar para textos
Contato:
enviar um e-mail
edx2martin arroba gmail.com