Loading repository data…
Loading repository data…
RodrigoCardoso-Git / repository
Projeto educacional que implementa um sistema bancário simples cliente-servidor usando Node.js, TypeScript e WebSocket, com protocolo próprio GBTP para troca de mensagens.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Este projeto é um exemplo educacional para a disciplina de Redes de Computadores, demonstrando a implementação de um sistema bancário simples em rede no modelo cliente-servidor, utilizando TypeScript. O cliente se conecta ao servidor via WebSocket, utilizando um protocolo de aplicação próprio chamado GBTP. Este projeto contempla exclusivamente o desenvolvimento da parte back-end da aplicação, sendo o desenvolvimento do front-end de responsabilidade de outros grupos.
/gabio-server # Projeto do servidor (Node.js com TypeScript)
README.md # Documentação do projeto
O protocolo GBTP (Generic Banking Transfer Protocol) define a troca de mensagens entre cliente e servidor.
Representa uma requisição de operação bancária:
export class GBTPRequest {
operation: string; // BALANCE | DEPOSIT | WITHDRAW | TRANSFER
account_id: string;
to_account_id: string | void;
value: number;
constructor(operation: string, account_id: string, to_account_id: string | void, value: number) { ... }
public static fromString(request: string): GBTPRequest { ... }
public toString(): string {
return [
\`OPERATION:\${this.operation}\`,
\`ACCOUNT_ID:\${this.account_id}\`,
\`TO_ACCOUNT_ID:\${this.to_account_id}\`,
\`VALUE:\${this.value}\`
].join('\n');
}
}
Formato da mensagem:
OPERATION:<BALANCE|DEPOSIT|WITHDRAW|TRANSFER>
ACCOUNT_ID:<identificador da conta de origem>
TO_ACCOUNT_ID:<identificador da conta de destino ou vazio>
VALUE:<valor numérico>
Representa o resultado da operação bancária:
export class GBTPResult {
status: string; // OK | ERROR
message: string;
balance: number;
constructor(status: string, message: string, balance: number) { ... }
public static fromString(resultMessage: string): GBTPResult { ... }
public toString() {
return [
`STATUS: ${this.status}`,
`MESSAGE: ${this.message}`,
`BALANCE: ${this.balance}`
].join('\n');
}
}
Formato da mensagem de resposta:
STATUS:<OK ou ERROR>
MESSAGE:<mensagem descritiva>
BALANCE:<saldo atual ou -1(conta não encontrada)>
| Operação | Descrição |
|---|---|
| BALANCE | Consulta o saldo da conta especificada. |
| DEPOSIT | Realiza um depósito na conta especificada. |
| WITHDRAW | Realiza um saque na conta especificada. |
| TRANSFER | Transfere valor de uma conta de origem para uma de destino. |
cd gabio-server
npm install
npm run build
npm start
O servidor será iniciado e aguardará conexões WebSocket na porta padrão configurada no código (8080).
websocat, Postman ou um cliente próprio em HTML/JS).OPERATION:DEPOSIT
ACCOUNT_ID:1001
TO_ACCOUNT_ID:
VALUE:100
STATUS:OK
MESSAGE:Depósito realizado com sucesso
BALANCE:600
Licença MIT