1
我正在嘗試開發一個聊天應用程序,並具有發送私人消息的能力。我一直堅持了一個多星期。私人信息部分不能正常工作。NodeJS Socket.io私人消息代碼不起作用
這是我的代碼,當用戶想要發送私人消息: 它基本上檢查用戶是否在線,並且如果從用戶dict獲取該用戶的套接字。並將其廣播給該用戶以及自己發送該用戶的用戶。
socket.on('send message', function(data, callback){
var msg = data.trim();
var name = req.params.posteruname;
if(name in users){
users[name].emit('new message', {msg: msg, nick: socket.nickname});
users[req.user.username].emit('new message', {msg: msg, nick: socket.nickname});
}
else{
callback('Error! Enter a valid user.');
}
});
這裏是客戶端代碼:
socket.on('new message', function(data){
if(data.nick == "{{reciever}}" || data.nick == "{{user.username}}") {
displayMsg(data);
}
});
它基本上再次檢查,如果是正被廣播到接收器或發送器。
下面是當新用戶加入的代碼:
socket.on('new user', function(data, callback){
if (data in users){
callback(false);
} else{
console.log(users);
callback(true);
socket.nickname = req.user.username;
users[socket.nickname] = socket;
updateNicknames();
console.log(users);
}
});
function updateNicknames(){
io.sockets.emit('usernames', Object.keys(users));
}
每次我試圖發送一個消息,它不會發件人的屏幕上顯示,並這樣做兩次接收器的屏幕上。而當第三個用戶連接時,發送消息只會在第三個用戶的屏幕上廣播,即使它應該位於user1和user2之間。
我試過了,它不起作用。我只是想知道,它與我所擁有的有什麼不同? – blehadfas1
發佈您的客戶端和服務器端代碼 –
我發佈了它。現在檢查問題。 – blehadfas1