Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

373
Vistas
Sistema de notificación usando socket.io

Estoy tratando de crear un sistema de notificación para mi sitio web de Events Manager.

  1. Cada vez que un usuario inicia sesión y hace algo (por ejemplo, si crea un evento), la notificación de que ha creado un evento debe enviarse a los otros usuarios. Las notificaciones deben estar disponibles en la página ' /notificación/:nombre de usuario ' que está autenticado (donde el nombre de usuario es único para cada usuario).

  2. Además, si el usuario crea un evento privado, la notificación debe enviarse a los usuarios interesados.

Estoy usando Nodejs (Express), socket.io, Vanilla javascript, mysql . Para esto, si estoy en lo correcto, necesito almacenar el ID de cliente (en mi caso, es el nombre de usuario) y el ID de socket en la base de datos (mysql) como pares de valores clave .Pero estoy tan confundido sobre cómo proceder. No sé cómo obtener el socketid para diferentes usuarios y almacenarlo en la base de datos. No tengo ni idea de cómo proceder. Sería genial si alguien me explicara qué debo hacer, cuáles son las cosas que necesito para abordar el problema, etc. ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Voy a tratar de explicarle algunas formas en las que puede proceder.

Entonces, según tengo entendido, ya tiene un sistema de usuarios adjunto a su mysql y, por lo tanto, conoce la información de los usuarios, ¿verdad?

Entonces, soy un usuario de autenticación en su sistema y puedo crear un evento, cuando es público, debe enviarse a todos, ¿verdad?

lo que puede usar para esto es lo siguiente:

 io.emit('event-created', data);` // so this part from server is gonna send everyone // your frontend part should recieve this event. socket.on("event-created", function(data) { // this is gonna be a public event anyway so everyone can see it // so here you have your newly created event's data so use it as needed =) });

Entonces, la segunda parte es un poco más complicada, debe ser privada, ¿no?

Aquí lo que puede hacer, nos dijo que sus nombres de usuario son únicos, ¿verdad? para que todos puedan unirse a su propia sala con el nombre de su nombre de usuario, por lo que en su conexión puede hacer algo como esto:

 io.on("connection", (socket) => { // I'm assuming that you have a username here socket.join('uniq-username'); });

Lo que tenemos aquí que digamos para mí, si desea enviar un evento solo llamado halilcakar este es mi nombre de usuario y ya me agregó a mi sala. lo que puedes hacer es

io.in('halilcakar').emit('some-event', { ...withSomeData });

Cuando usas esto en algún lugar de tu código, y si estoy en línea, este evento solo será visible para mí.

Entonces, lo que estoy tratando de decir nuevamente suponiendo que al crear un evento privado necesitamos seleccionar qué usuario está incluido con esto, ¿verdad?

Así que vamos a la derecha en este código.

 // this part is already in your connection // create a private event socket.on('private-event-created', data => { // here the data coming from frontend // while sending this down just make sure data // has a property called users as usernames and array maybe? // since you created this event what you can do is send an emit to // each user like following: data.users.forEach(username => io.in(username).emit('private-event', data)); // So basicly we are sending this event to // every user selected by the creator of this private event // again the part giving this ability is | .in(username) | this part });

Después de todo, debe escuchar este evento de evento private-event de socket.io

 // so on frontend socket.on('private-event', function(data) { // here do the private events objectives. // and the good part that even me(single user) // I'll know who has this private-event by // data.users });

Espero que esto te dé más ideas :)) No dudes en preguntar 😊😊

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda