Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- dsdasd
- html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <link rel="stylesheet" href="style.css">
- <link href="https://fonts.cdnfonts.com/css/lilita-one" rel="stylesheet">
- <!-- <link rel="icon" href="logodosite"> -->
- <title>Início | Mensageiro</title>
- </head>
- <body>
- <div class="app">
- <div class="screen join-screen active">
- <div class="form">
- <h2>Bate-Papo</h2>
- <div class="form-input">
- <label>Usuário</label>
- <input type="text" id="username">
- </div>
- <div class="form-input">
- <button id="join-user">Entrar</button>
- </div>
- </div>
- </div>
- <div class="screen chat-screen">
- <div class="header">
- <div class="logo">Bate-Papo</div>
- <button id="exit-chat">Sair</button>
- </div>
- <div class="messages">
- </div>
- <div class="typebox">
- <input type="text" id="message-input">
- <button id="send-message">Enviar</button>
- </div>
- </div>
- </div>
- <script type="text/javascript" src="socket.io/socket.io.js"></script>
- <script type="text/javascript" src="code.js"></script>
- </body>
- </html>
- css
- @import url('https://fonts.cdnfonts.com/css/lilita-one');
- * {
- margin: 0px;
- padding: 0px;
- box-sizing: border-box;
- }
- body {
- font-family: 'Lilita One', Arial, Helvetica, sans-serif;
- height: 100vh;
- display: flex;
- justify-content: center;
- }
- .app {
- position: fixed;
- width: 100%;
- height: 100%;
- max-width: 600px;
- background: #ffffff;
- border-left: 1px solid #eeeeee;
- border-right: 1px solid #eeeeee;
- }
- .app > .screen {
- display: none;
- }
- .app > .screen.active {
- display: block;
- width: 100%;
- height: 100%;
- }
- .screen .form {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- width: 80%;
- max-width: 400px;
- }
- .screen .form-input {
- width: 100%;
- margin: 20px 0px;
- }
- .screen h2 {
- margin-bottom: 20px;
- font-size: 30px;
- color: #111111;
- border-bottom: 4px solid #444444;
- padding: 5px 0px;
- display: inline-block;
- }
- .screen .form-input label {
- display: block;
- margin-bottom: 5px;
- }
- .screen .form-input input {
- width: 100%;
- padding: 10px;
- border: 1px solid #555555;
- font-size: 16px;
- }
- .screen .form-input button {
- padding: 10px 20px;
- background: #111111;
- color: #eeeeee;
- font-size: 16px;
- cursor: pointer;
- outline: none;
- border: none;
- }
- .chat-screen .header {
- background: #111111;
- height: 50px;
- display: flex;
- justify-content: space-between;
- align-items: center;
- padding: 0px 20px;
- }
- .chat-screen .header .logo {
- font-size: 18px;
- color: #eeeeee;
- font-weight: 600;
- }
- .chat-screen .header button {
- padding: 5px 10px;
- border: 1px solid #eeeeee;
- background: transparent;
- color: #eeeeee;
- font-size: 15px;
- cursor: pointer;
- outline: none;
- }
- .chat-screen .messages {
- width: 100%;
- height: calc(100% - 100px);
- background: #f5f5f5;
- overflow: auto;
- }
- .chat-screen .messages .message {
- display: flex;
- padding: 10px;
- }
- .chat-screen .messages .message > div {
- max-width: 80%;
- background: #ffffff;
- box-shadow: 0px 0px 20px 5px #0000000d;
- padding: 10px;
- }
- .chat-screen .messages .message.my-message {
- justify-content: flex-end;
- }
- .chat-screen .messages .message.other-message {
- justify-content: flex-start;
- }
- .chat-screen .messages .message .name {
- font-size: 13px;
- color: #555555;
- margin-bottom: 5px;
- }
- .chat-screen .messages .message .text {
- word-wrap: break-word;
- }
- .chat-screen .messages .update {
- text-align: center;
- padding: 10px;
- font-style: italic;
- }
- .chat-screen .typebox {
- width: 100%;
- height: 50px;
- display: flex;
- }
- .chat-screen .typebox input {
- flex: 1;
- height: 50px;
- font-size: 18px;
- }
- .chat-screen .typebox button {
- width: 80px;
- height: 100%;
- background: #111111;
- color: #eeeeee;
- font-size: 16px;
- outline: none;
- border: none;
- cursor: pointer;
- }
- js
- (function() {
- const app = document.querySelector(".app");
- const socket = io();
- let uname;
- app.querySelector(".join-screen #join-user").addEventListener("click", function() {
- let username = app.querySelector(".join-screen #username").value;
- if(username.length == 0) {
- return;
- }
- socket.emit("newuser", username);
- uname = username;
- app.querySelector(".join-screen").classList.remove("active");
- app.querySelector(".chat-screen").classList.add("active");
- });
- app.querySelector(".chat-screen #send-message").addEventListener("click", function() {
- let message = app.querySelector(".chat-screen #message-input").value;
- if(message.length == 0) {
- return;
- }
- renderMessage("my", {
- username:uname,
- text:message
- });
- socket.emit("chat", {
- username:uname,
- text:message
- });
- app.querySelector(".chat-screen #message-input").value = "";
- });
- app.querySelector(".chat-screen #exit-chat").addEventListener("click", function() {
- socket.emit("exituser", uname);
- window.location.href = window.location.href;
- });
- socket.on("update", function(update) {
- renderMessage("update", update);
- });
- socket.on("chat", function(message) {
- renderMessage("other", message);
- });
- function renderMessage(type,message) {
- let messageContainer = app.querySelector(".chat-screen .messages");
- if(type == "my") {
- let el = document.createElement("div");
- el.setAttribute("class", "message my-message");
- el.innerHTML = `
- <div>
- <div class="name">Você</div>
- <div class="text">${message.text}</div>
- </div>
- `;
- messageContainer.appendChild(el);
- }
- else if(type == "other") {
- let el = document.createElement("div");
- el.setAttribute("class", "message other-message");
- el.innerHTML = `
- <div>
- <div class="name">${message.username}</div>
- <div class="text">${message.text}</div>
- </div>
- `;
- messageContainer.appendChild(el);
- }
- else if(type == "update") {
- let el = document.createElement("div");
- el.setAttribute("class", "update");
- el.innerText = message;
- messageContainer.appendChild(el);
- }
- // Arrasta pro Chat pro Final
- messageContainer.scrollTop = messageContainer.scrollHeight - messageContainer.clientHeight;
- }
- })();
- server.js
- const express = require("express");
- const path = require("path");
- const app = express();
- const PORT = process.env.PORT || 5000;
- const server = require("http").createServer(app);
- const io = require("socket.io")(server);
- app.use(express.static(path.join(__dirname+"/public")));
- io.on("connection", function(socket){
- socket.on("newuser", function(username){
- socket.broadcast.emit("update", username + " Entrou na Conversa!")
- });
- socket.on("exituser", function(username){
- socket.broadcast.emit("update", username + " Saiu da Conversa!")
- });
- socket.on("chat", function(message){
- socket.broadcast.emit("chat", message);
- });
- });
- server.listen(PORT, () => {
- console.log(`⠀`);
- console.log(`Servidor Iniciado com Sucesso!`);
- console.log(`Porta do Servidor: ${PORT}`);
- console.log(`⠀`);
- // console.log(`------------------------------------------`);
- // console.log(`⠀`);
- // console.log(`Para entrar clique aqui: <http://localhost:${PORT}/>`)
- // console.log(`⠀`);
- });
Advertisement
Add Comment
Please, Sign In to add comment