¿Cómo emitir un evento cuando se hace clic en una casilla de verificación usando Socket.IO?

Declaración del problema: la tarea es realizar una acción emitiendo un evento desde el backend cada vez que se hace clic en una casilla de verificación particular en el frontend. Esto debe hacerse usando Socket.IO y Node.js

Requisito previo:

  1. Node.js : es una tecnología JavaScript Back-End de código abierto.
  2. Express.js : es un marco de servidor de node.js.
  3. Socket.io : Nos ayuda a crear una comunicación bidireccional basada en eventos en tiempo real entre el servidor y el cliente.

Ahora necesitamos instalar los paquetes necesarios para nuestro proyecto.

  • Instalación de los módulos.

    npm install express socket.io

Estructura del proyecto:

Paso 1: Cree un archivo de servidor llamado server.js.

server.js

// Importing express module
const express = require('express'); 
const app = express(); 
  
    
// Calling the public folder
app.use(express.static("public")); 
    
// Handling get request
app.get("/" , (req,res)=>{
  res.send("GeeksforGeeks); 
});
    
// Listing the server 
app.listen(4000 , ()=>{
    console.log("Server running on port 4000");
)

Salida: ahora, si abre el host local, es decir, localhost: 4000, verá la salida, es decir, GeeksforGeeks .

Paso 2: Ahora, implementemos el socket en nuestro archivo de servidor, es decir, server.js

Sintaxis:

const io = require('socket.io')(server);

server.js

// Importing express module
const express = require('express');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
  
// Calling the public folder
app.use(express.static('public'))
  
// Handling get request
app.get("/" , (req,res)=>{
    res.render("index");
});
  
  
// Listening to the server
server.listen(4000 , ()=>{
    console.log("server is running");
})

Paso 3: Ahora vamos a crear un archivo Html básico, es decir, index.html y un archivo JavaScript, es decir, index.js, en nuestra carpeta pública.

Paso 4: ahora agreguemos socket.io a nuestro front-end. Agregue este script en su archivo html.

<script src="socket.io/socket.io.js" defer></script>

Paso 5: ahora vamos a crear la función de casilla de verificación. En esto, hemos creado una casilla de verificación simple. Cuando marcamos la casilla de verificación, emitirá un evento de socket que escucha el servidor y luego el servidor emite un evento reconocido que será escuchado por el lado del cliente y después de recibir ese evento. alertará el reconocimiento.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" 
          content="width=device-width, initial-scale=1.0">
    <script src="socket.io/socket.io.js" defer></script>
    <script src="index.js" defer></script>
</head>
<body>
    <center>
    <h1>GeeksforGeeks</h1>
    <p><input id="check" type="checkbox" 
              onchange="changed()"/>
        Click me
    </p>
  
    </center>
</body>
</html>

index.js

// Socket Initialized
const socket = io('/');
  
function changed()
{
   // Getting current state of checkbox.
   var a = document.getElementById('check').checked;
   if(a)
   {
         // Emiting the event.
      socket.emit("checkedTrue");  
    }
}
  
//Listening on the event.
socket.on("acknowledged" , ()=>{
    alert("Action acknowledged by the server");
});

server.js

// Importing express module
const express = require('express');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
  
// Calling the public folder
app.use(express.static('public'))
  
// Handling get request
app.get("/" , (req,res)=>{
    res.render("index");
});
  
// Socket
io.on("connection" , (socket)=>{
    socket.on("checkedTrue" , ()=>{
        socket.emit("acknowledged")
    })
})
  
// Listening the server
server.listen(4000 , ()=>{
    console.log("server is running");
})

Producción:

Publicación traducida automáticamente

Artículo escrito por iamabhishekkalra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *