资源说明:Exercicio da faculdade - chat em ruby
= Instruções e Informações para o ChatRadical Feito e testado na versão Ruby 1.8.5 == Rodar o servidor chatradical-server.rb - Abre um servidor de chat na porta 7000, escutando em todas interfaces == Rodar o cliente chatradical-cliente.rb [servidor] [porta] - Conecta-se no servidor de chat. Caso não seja especificado o servidor e porta, usa-se os valores localhost e 7000 respectivamente. = Informações de Conexão * Antes de se conectar, pede-se o nick (apelido) e nome. Ambos so aceitam uma palavra de ate 24 caracteres * Não se aceita duas conexões com o mesmo nick, não insistir. * Quando conectado, já entra automaticamente na sala "default". = Comandos do cliente * /help - Esta lista de comandos * /list - Lista as salas * /join[descricao] - Entra na sala, se nao existir cria uma nova * /who - Mostra quem está na sala atual * /info - Mostra o nome da sala atual e sua descrição * /log [n] - Mostra n número de linhas de histórico do canal (padrão 30) * /msg - Manda uma mensagem privada para alguém * /nick - Muda o seu nick * /quit - Sai do servidor = Documentação de desenvolvimento Uma documentação foi gerada através do código-fonte usando o RDoc, e se encontra no diretório docs/. = Considerações Foi feito para lembrar o good'an'old IRC. No servidor eu usei Threads com IO bloqueado, enquanto que no cliente eu usei IO assíncrono não bloqueado. Ainda no cliente, para lidar com o STDIN, utilizei threads pelo fato do Windows não aceitar a função select() para lidar com o STDIN, apenas com sockets, então deixei misto. Deixei dessa forma então para, no exercício, ficar as duas formas. = Protocolo O protocolo do servidor é simples e definido nesta parte. == Conexão Quando o cliente efetuar uma conexão, o servidor espera por um handshake para só então registrar o usuário no chat. === CONN Estabelece uma conexão com o servidor de chat. - Letras e números de até 24 caracteres - Letras e números de até 24 caracteres Retorna: RCV_CONN ERR Ocorreu um erro na tentativa de handshake. Possíveis causas podem ser: * Sintaxe incorreta de protocolo * Nick já em uso RCV_CONN OK A conexão foi efetuada com sucesso e o usuário está registrado registrado no chat. O é o número de conexão que ele recebe do servidor. Em seguida, o servidor manda a mensagem de boas vindas ao cliente. RCV_MOTD OK A mensagem de boas vindas foi enviada completamente para o cliente e a sessão é estabelecida. === QUIT Finaliza a conexão com o servidor de chat. == Comandos Mensagens de protocolo mandadas ao servidor para efetuar alguma ação. === CMD_LISTCHN Pergunta ao servidor quais as salas disponíveis para o chat Retorna: RCV_LISTCHN ERR Ocorreu um erro ao listar as salas disponíveis RCV_LISTCHN OK O primeiro argumento contém uma lista das salas disponíveis no servidor, separados por um 'pipe' (|). O cliente deve fazer o parse para mostrar. === CMD_WHOCHN Pergunta ao servidor quais os membros da sala atual Retorna: RCV_WHOCHN ERR Ocorreu um erro ao listar os usuários da sala RCV_WHOCHN OK O primeiro argumento contém uma lista dos membros da sala atual, separados por um 'pipe' (|). O cliente deve fazer o parse para mostrar. === CMD_JOINCHN [descricao] Muda a sala que o cliente está. O cliente só pode ficar em apenas uma sala por vez. Caso a sala não exista, o servidor cria uma nova, e neste caso o parâmetro [descricao] se torna obrigatório. Retorna: RCV_JOINCHN ERR Ocorreu um erro ao tentar entrar na sala ou criá-la. RCV_JOINCHN OK O cliente foi mudado para a sala de nome ' ' com sucesso. === CMD_INFOCHN Mostra o nome e a descrição da sala atual Retorna: CMD_INFOCHN ERR Ocorreu um erro ao tentar mostrar as informações da sala. CMD_INFOCHN OK - nome da sala - descrição da sala === CMD_NICK Muda o apelido (nick) do usuário atual. - Letras e números de até 24 caracteres Retorna: RCV_NICK ERR Ocorreu um erro ao tentar trocar o nick do usuário. Possíveis causas: * Sintaxe do nick incorreta * Nick já existe RCV_NICK OK O nick do cliente foi modificado com sucesso. === CMD_PVT Manda uma mensagem privada para alguém. - apelido da pessoa para a mensagem ser enviada - a mensagem em si Retorna: RCV_PVT ERR Ocorreu um erro ao enviar a mensagem. RCV_PVT OK A mensagem foi enviada com sucesso. === CMD_CHATLOG [tail] Pede o registro de conversa do canal atual. [tail] - quantidade de últimas linhas (padrão é 30) Retorna: RCV_CHATLOG ERR Ocorreu um erro ao tentar acessar o registro de conversa. RCV_CHATLOG OK O cliente recebeu todos os registros pedidos. == Recebimento Mensagens que o servidor manda de forma independente para os clientes e que deve ser sempre escutada e tratada. === RCV_CHATMSG Uma mensagem chegou para o cliente e deve ser mostrada ao usuário.
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。