Giter Club home page Giter Club logo

coffee-chat's Introduction

Contributors Forks Stargazers Issues MIT License


Logo

Projeto Coffee-Chat

Projeto desenvolvido para matéria de Redes 1
Documentação do código do projeto

Sumário
  1. Sobre o projeto
  2. Como começar
  3. Protocolo
  4. Contribuidores

Sobre o projeto

O projeto é de criação de um chat que conecte diversas pessoas na mesma rede. Ele se chama coffee-chat por nossa paixão por café (exceto Samuel) e por ser nosso melhor companheiro na horas mais tardias enquanto programamos.

O projeto foi testado para plataformas windows 10 e ubuntu 20.04.

Motivação

Esse projeto originou-se pela curiosidade de compreender como o processo de um chat em real-time funciona, além de aprender como diversos computadores poderiam estar conectados na mesma rede sem que houvesse falha no recebimento e envio de mensagens.

Ferramentas

Para esse projeto utilizamos o Python e o Conda para conteinerização das depedências.

Pré-requisitos

Todos os requisitos necessários para rodar o projeto estão especificados no arquivo environment.yml localizado no diretório raiz do projeto.

Instalação

Pode ser feita a instalação das dependências via conda ou pip.

Via Conda

Para instalar via conda é necessária ter a última versão do mesmo. Um tutorial para fazer a instalação corretamente do conda no Windows, macOS ou Linux pode ser acessada aqui.

Após concluir a instalação do conda, basta executar o seguinte comando na CLI:

conda env create -f environment.yml

Feito isso, todas as dependências que estão localizadas no environment.yml serão instaladas no ambiente que será criado com o nome coffee-chat. Para ativar o ambiente execute o comando a seguir:

conda activate coffee-chat

Via Pip

Para instalar o projeto utilizando o pip basta utilizar o arquivo requiriments.txt localizado no diretório raiz do projeto. Basta executar o comando a seguir:

pip install -r requirements.txt

A versão do pip utilizada no desenvolvimento do projevo foi a v20.3.

Finalizando instalação (somente Windows)

O CoffeeChat oferece recurso de notificação para usuários Windows, para isso é necessário instalar duas bibliotecas, executando o comando que segue:

pip install pywin32
pip install win10toast

Como começar

O projeto é dividido em servidor e cliente. O servidor conectar e gerencia todas as requisições dos clientes. O cliente se comunica com o servidor mandando mensagens e renderiza o retorno dele.

Para rodar o projeto é preciso iniciar um servidor em um endereço IP na rede que os demais clientes possam acessar. Em seguinda é necessário conectar os clientes com esse IP.

Servidor

Para iniciar o servidor rode o seguinte comando:

python server.py

Após rodar esse comando irá aparecer a seguinte caixa de texto, basta clicar no texto dela e digitar o IP onde o servidor irá rodar e depois aperta ENTER

server-1 server-2

Com isso o servidor estará pronto para receber os clientes

Clientes

Para iniciar um cliente basta abrir outro terminal, caso esteja no mesmo computador do servidor, e rodar o seguinte comando

python client.py

Irá abrir uma caixa semelhante ao do servidor, basta preencher com o IP do seu servidor e depois aperta em ENTER

client-1 client-1

Em seguida, irá abrir uma nova caixa pedindo para o nome de identificação do usuário

client-1 client-1

Após preencher o nome do usuário irá abrir uma janela para o chat:

client-1

Para testar basta digitar algo e enviar. Atenção! o input do chat não aceita caracteres especiais.

client-1

Para criar um novo chat basta abrir um novo terminar e rodar o comando para rodar o cliente novamente e preencher com os dados do servidor, o mesmo vale para caso esteja testando em outro computador.

Quando um novo usuário entra na rede os usuários já existentes são notificados

client-1

É possivel conectar diversos usuários ao chat, no windows 10 sempre que tiver uma nova mensagem aparecerá ela na notificação do SO

client-1

Protocolo

Para a aplicação enviar e receber mensagens criamos uma estrutura client-server, onde o servidor é responsável por receber mensagens e difundir elas para os clientes conectados. Para comunicação entre o servidor e o cliente usamos o modelo TCP/IP.

Logo

O servidor quando roda ele armazena todos os clientes conectados guardando seus IP's e suas portas. A distribuição de mensagem funciona da seguinte forma

  • Um cliente manda uma mensagem para o servidor
  • O servidor recebe e processa a mensagem
  • O servidor envia as mensagens para todos os clientes conectados
  • Os clientes conectados mostram a mensagem da tela

Para mais informações de como foi realizado a implementação acesse o link da documentação

Contribuidores

coffee-chat's People

Contributors

adrielfabricio avatar marcelinodiego avatar serraz3 avatar smvasconcelos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

coffee-chat's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.