private chat mit sockel.io
Ich habe Probleme mit meinem chat-app, die ich brauche, um in der Lage sein senden Sie eine private Nachricht an einen bestimmten Benutzer, ich war in der Lage zu wählen, die bestimmte Benutzer, aber aus irgendeinem Grund konnte nicht herausfinden, wie zu senden Sie die private Nachricht.
Unten finden Sie den code für mein server bitte um Hilfe:
JS:
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);
});
- machen Sie sich ein eigenes Zimmer, dann senden Sie Nachricht an ein particuler der Benutzer in diesem Raum
- Kunden nur sendet eine Nachricht an den server. Wenn Sie möchten, dass der client eine Nachricht an einen bestimmten user, dann schicken Sie eine Nachricht an den server und sagen Sie dem server, der Benutzer, den Sie möchten, dass der server, um es zu liefern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre client-seitigen code für join-private Zimmer
<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>
Ihren javascript-code im client-Seite
function a(){
io.emit('privatechatrrom', {email:document.getElementById('user_email').value});
}
dein server-Seite code hinzufügen, um Benutzer in Ihrem Zimmer
socket.on('privatechatroom',function(data){
socket.join(data.email);
io.emit('res',{mes:"you are added"})
});
nun kann u senden private Nachricht an die person, die vor kurzem addedd zu diesem Raum
client-Seite
Hier wird die klare Lösung von mir für deine Frage...
Senden Sie eine Nachricht an Bestimmte Clients(Privat-chat)
Ich hoffe, es wird für Sie arbeiten verklagen..