Projecto Aplicativo de Conversa
Projecto Aplicativo de Conversa
Projecto Aplicativo de Conversa
**Página de Conversa**
Vamos criar uma página de conversa que exiba as mensagens enviadas e recebidas
entre os usuários. Vamos usar HTML e CSS para criar a estrutura da página.
```html
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Aplicativo de Conversa</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>Conversa</h1>
<ul id="messages"></ul>
<input id="input" type="text" placeholder="Digite sua mensagem...">
<button id="send">Enviar</button>
</div>
<script src="script.js"></script>
</body>
</html>
```
```css
/* styles.css */
body {
font-family: Arial, sans-serif;
}
.container {
width: 80%;
margin: 40px auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
#messages {
list-style: none;
padding: 0;
margin: 0;
}
#messages li {
padding: 10px;
border-bottom: 1px solid #ccc;
}
#input {
width: 80%;
height: 30px;
padding: 10px;
font-size: 16px;
}
#send {
width: 20%;
height: 30px;
padding: 10px;
font-size: 16px;
background-color: #4CAF50;
color: #fff;
border: none;
border-radius: 5px;
}
```
**JavaScript**
Vamos usar JavaScript para criar a lógica de interação da página de conversa. Vamos
criar um objeto `Message` que represente as mensagens enviadas e recebidas.
```javascript
// script.js
const messageList = document.getElementById('messages');
const input = document.getElementById('input');
const sendButton = document.getElementById('send');
class Message {
constructor(text, from) {
this.text = text;
this.from = from;
this.date = new Date();
this.id = Math.random();
return this;
}
}
function addMessage(message) {
const messageHTML = `
<li>
<span style="font-weight: bold;">${message.from}</span>: ${message.text}
<span style="font-size: small;">
(${message.date.toLocaleTimeString()})</span>
</li>
`;
messageList.innerHTML += messageHTML;
}
function send() {
const text = input.value.trim();
if (text !== '') {
const message = new Message(text, 'Você');
messages.push(message);
addMessage(message);
input.value = '';
sendButton.disabled = true;
setTimeout(() => {
sendButton.disabled = false;
}, 1000);
}
```
Aqui está o código do backend completo atualizado para usar o banco de dados MySQL
com SQL:
**database.js**
```javascript
const mysql = require('mysql');
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'your_password',
database: 'conversa'
});
db.connect((err) => {
if (err) {
console.error('Erro ao se conectar ao banco de dados:', err);
return;
}
console.log('Conectado ao banco de dados');
});
module.exports = db;
```
**server.js**
```javascript
const express = require('express');
const app = express();
const db = require('./database.js');
// Iniciar servidor
app.listen(3000, () => {
console.log('Servidor iniciado na porta 3000');
});
```
Vamos começar criando um arquivo `message.js` para lidar com as mensagens. Nele,
vamos criar uma classe `Message` que representará as mensagens:
```javascript
// message.js
class Message {
constructor(id, text, from, date) {
this.id = id;
this.text = text;
this.from = from;
this.date = date;
}
}
module.exports = Message;
```
Agora, vamos criar um arquivo `messageService.js` para lidar com as operações de
mensagens. Nele, vamos criar uma classe `MessageService` que irá lidar com as
operações de mensagens:
```javascript
// messageService.js
const Message = require('./message.js');
const db = require('../database.js');
class MessageService {
async getAllMessages() {
const query = `SELECT * FROM messages`;
const results = await db.query(query);
return results.map((row) => new Message(row.id, row.text, row.from, row.date));
}
async getMessageById(id) {
const query = `SELECT * FROM messages WHERE id = ?`;
const results = await db.query(query, [id]);
return results[0] && new Message(results[0].id, results[0].text,
results[0].from, results[0].date);
}
async sendMessage(message) {
const query = `INSERT INTO messages (text, from, date) VALUES (?, ?, ?)`;
await db.query(query, [message.text, message.from, new Date()]);
}
}
module.exports = MessageService;
```
**Implementar a autenticação e autorização**
Vamos criar um arquivo `auth.js` para lidar com a autenticação e autorização. Nele,
vamos criar uma função `authenticate` que verificará se o usuário é válido:
```javascript
// auth.js
const db = require('../database.js');
module.exports = { authenticate };
```
Agora, vamos atualizar o arquivo `server.js` para utilizar a autenticação e
autorização:
```javascript
// server.js
const express = require('express');
const app = express();
const db = require('./database.js');
const MessageService = require('./messageService.js');
const auth = require('./auth.js');
app.use(express.json());
app.listen(3000, () => {
console.log('Servidor iniciado na porta 3000');
});
```
Isso é um começo! Agora você tem uma estrutura básica para lidar com as mensagens e
a autenticação e autorização.