Giter Club home page Giter Club logo

sockets's Introduction

Sockets

https://socket.io/

https://socket.io/docs/v4/server-api/

  1. npm init -y
  2. npm i express http nodemon socket.io express
  3. file index.js
  4. scripts { "start": "nodemon index.js" }
  5. Do index.js souboru ->
const express = require("express");
const http = require("http");
const { Server } = require("socket.io")
const app = express();
const server = http.createServer(app);
const io = new Server(server, {
   cors: {
       origin: "*"
   } 
});
const PORT = 3000;

const activeUsers = new Set();

io.on("connection", (socket) => {
    console.log("New connection");

    socket.on("new user connected", (data) => {
        console.log(`${data} connected`); //Printing out connected data -> (user)
        socket.data.user = data;          //Get users name
        activeUsers.add(data);            //Adding user to active users
        io.emit("new user connected", [...activeUsers]); //Converting activeUser to an Array
    });

    socket.on("disconnect", () => {                      //No data were sent
        console.log(`${socket.data.user} disconnected`); //Printing out logged out data -> (user)
        activeUsers.delete(socket.data.user);            //Deleting data (user) from activeUsers
        io.emit("user disconnected", socket.data.user);  //Sending data to others that someone has disconnected
    });

});

server.listen(PORT, () => console.log(`Server is running on ${PORT}`));

6)Spuštění serveru v node.js -> npm start, vypnutí serveru: Ctrl+c
7)Tvorba složky clients a vklad do hlavní složky, 8 -> Základní struktura složek
8)Použití socket scriptu (obr. 10 vložím do index.html) image
9)https://cdnjs.com/libraries/socket.io
10)image
11)Soubor main.js -> const socket = io("http://127.0.0.1:3000");
12) image image image image
Do index.html -> image

Do main.js -> Přidání nových uživatelů na server

const socket = io("http://127.0.0.1:3000");
const users = document.getElementById("users");
const input = document.getElementById("input");
const send = document.getElementById("send");
const chat = document.getElementById("chat");

let userName = "";

const onUserConnect = (user) => {
    userName = user || `User${Math.floor(Math.random()*1000000)}`; //Generating random name
    socket.emit("new user connected", userName); //io.on name
    newUser(userName);
};

const newUser = (user) => {
    if(document.querySelector(`.${user}-userlist`)) return;
    const newUserDiv = `
    <div class="${user}-userlist"> 
    <p>${user}</p>
    </div>
    `;
    users.innerHTML += newUserDiv;
}

window.onload = () => {
    onUserConnect();
}

socket.on("new user connected", (data) => { //index.js - row 19 ([on name])
    console.log(data);
    data.map((user) => newUser(user));
});

socket.on("user disconnected", (user)=> {
    document.querySelector(`.${user}-userlist`).remove();
});

: image
Chat -> main.js

//CHAT
send.onclick = () => {
    socket.emit("chat", `${userName}: ${input.value}`);
    input.value = "";
}

socket.on("chat", (data) => {
    chat.innerHTML += `<p>${data}</p>`;
});

index.js

    socket.on("chat", (data)=> {
        io.emit("chat", data);
    });
});

sockets's People

Contributors

krbnjsf avatar

Watchers

 avatar

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.