node.js socket.io

node.js - chat privado con socket.io



(2)

  • Primero agregue el usuario en la sala de chat para que sea más fácil encontrar un usuario en su sala de chat privada
  • El código del lado del cliente para unirse a la sala privada

    <input type="text" class="form-control" id="user_email" placeholder="user_email" /> <button text="join room" class="btn btn-primary btn-block" onclick="a();"> Join Room</button>

  • su código de JavaScript en el lado del cliente

    function a(){ io.emit(''privatechatrrom'', {email:document.getElementById(''user_email'').value}); }

  • el código del lado del servidor para agregar usuario en su habitación

    socket.on(''privatechatroom'',function(data){ socket.join(data.email); io.emit(''res'',{mes:"you are added"}) });

ahora puede enviar un mensaje privado a esa persona que se agregó recientemente a este lado del cliente de la sala

function b() { io.emit(''sendmail'',{email:document.getElementById(''sender_mail'').value,message:document.getElementById(''message'').value}); $(''#message'').val(''''); } /*serverside code*/socket.on(''sendmail'',function(data) { io.sockets.in(data.email).emit(''new_msg'', {msg: data.message}); console.log(data.email); });

Tengo problemas con mi aplicación de chat, necesito poder enviar un mensaje privado a un usuario específico, pude seleccionar ese usuario específico pero por alguna razón no pude encontrar la manera de enviar el mensaje privado.

A continuación encontrará el código de mi servidor, por favor ayuda:

var express = require(''express''); var app = express(); var PORT = process.env.PORT || 8000; var http = require(''http'').Server(app); // this is a node server that uses express as the boiler plate var io = require(''socket.io'')(http); // socket! pass our server as a parameter to it // use express static to expose a folder app.use(express.static(__dirname + ''/public'')); var users = [], connections = []; var onlineClients = {}; // Register events on socket connection io.on(''connection'', function(socket){ connections.push(socket); // console.log("connected socket", connections); socket.on("disconnect", function() { users.splice(users.indexOf(socket.username), 1); updateUsernames(); connections.splice(connections.indexOf(socket), 1); console.log("disconnected socket", connections.length) }); socket.on("send message", function(data) { // console.log(data); io.emit("new message", {msg: data, user: socket.username}); }); socket.on("notify user", function(data) { io.emit("notify user", {user: socket.username}) }); socket.on("new user", function(data) { socket.username = data; users.push(socket.username); updateUsernames(); }); function updateUsernames() { io.emit("get users", users); }; socket.on("private", function(data, recipientName) { var recipient = connections.filter(function (recipient) { return recipient.username === recipientName; })[0]; console.log(recipient.id); console.log(data); io.sockets.socket(recipient.id).emit("received private msg", data); }); // socket.on("create room", function(room) { // socket.join(room); // io.sockets.in(room).emit(''event'', "hey wusup am in this room"); // console.log(socket); // }) }); http.listen(PORT, function(){ console.log(''Server started on port '' + PORT); });