与 socket.io 私聊 [英] private chat with socket.io
本文介绍了与 socket.io 私聊的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的聊天应用程序出现问题,我需要能够向特定用户发送私人消息,我能够选择该特定用户,但由于某种原因无法弄清楚如何发送私人消息留言.
I'm having trouble with my chat app, I need to be able to send a private message to a specific user, I was able to select that specific user but for some reason couldn't figure out how to send the private message.
你会在下面找到我的服务器的代码,请帮忙:
Below you will find the code for my server, please help:
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);
});
推荐答案
- 首先在聊天室添加用户,以便在您的私人聊天室中轻松找到用户
您加入私人房间的客户端代码
- First add user in chat room so that will easy to find a user in your private chat room
Your client side code for join private room
<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>
您在客户端的 javascript 代码
your javascript code in client side
function a(){ io.emit('privatechatroom', {email:document.getElementById('user_email').value}); }
用于在房间中添加用户的服务器端代码
your server side code to add user in your room
socket.on('privatechatroom',function(data){ socket.join(data.email); io.emit('res',{mes:"you are added"}) });
现在您可以向最近添加到此房间的人发送私人消息客户端
now u can send private message to that person that is recently addedd to this room client side
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); });
这篇关于与 socket.io 私聊的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文