2016-11-29 5 views
3

チャットアプリに問題があります。特定のユーザーにプライベートメッセージを送信する必要がありますが、その特定のユーザーを選択できましたが、何らかの理由で問題を特定できませんでしたプライベートメッセージを送信する方法。あなたは私のサーバーのコードを検索します下記socket.ioとのプライベートチャット

、助けてください:

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 = [], 
 
\t connections = []; 
 
var onlineClients = {}; 
 

 

 

 

 
// Register events on socket connection 
 
io.on('connection', function(socket){ 
 
\t connections.push(socket); 
 
\t // console.log("connected socket", connections); 
 

 
\t socket.on("disconnect", function() { 
 
\t \t users.splice(users.indexOf(socket.username), 1); 
 
\t \t updateUsernames(); 
 
\t \t connections.splice(connections.indexOf(socket), 1); 
 
\t \t console.log("disconnected socket", connections.length) 
 
\t }); 
 

 
\t socket.on("send message", function(data) { 
 
\t \t // console.log(data); 
 
\t \t io.emit("new message", {msg: data, user: socket.username}); 
 
\t }); 
 

 

 
\t socket.on("notify user", function(data) { 
 
\t \t io.emit("notify user", {user: socket.username}) 
 
\t }); 
 

 

 
\t socket.on("new user", function(data) { 
 
\t \t socket.username = data; 
 
\t \t users.push(socket.username); 
 
\t \t updateUsernames(); 
 

 
\t }); 
 

 
\t function updateUsernames() { 
 
\t \t io.emit("get users", users); 
 
\t }; 
 

 
\t socket.on("private", function(data, recipientName) { 
 
\t \t var recipient = connections.filter(function (recipient) { 
 
\t \t \t return recipient.username === recipientName; 
 
\t \t })[0]; 
 
\t \t \t console.log(recipient.id); 
 
\t \t \t console.log(data); 
 
\t \t io.sockets.socket(recipient.id).emit("received private msg", data); 
 

 
\t }); 
 

 

 
\t // socket.on("create room", function(room) { 
 
\t // \t socket.join(room); 
 
\t // \t io.sockets.in(room).emit('event', "hey wusup am in this room"); 
 
\t // \t console.log(socket); 
 

 
\t // }) 
 

 
}); 
 

 
http.listen(PORT, function(){ 
 
    console.log('Server started on port ' + PORT); 
 
});

+0

その部屋の特定のユーザにメッセージを送信します – Adiii

+0

クライアントはサーバにメッセージを送信します。クライアントが特定のユーザーにメッセージを受け取るようにするには、サーバーにメッセージを送信し、サーバーに送信するユーザーをサーバーに指示します。 – jfriend00

答えて

1
  • まずその意志簡単になるよう、あなたのプライベートチャットでユーザを検索するには、チャットルームにユーザーを追加お部屋
  • お客様専用のプライベートルーム専用コード

    <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>

  • お部屋

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

にユーザーを追加するには、クライアント側のJavaScriptのコード

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

  • 、サーバー側のコードは現在、uはプライベート送ることができます最近この部屋に追加された人へのメッセージ クライアント側ここ

    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); 
    }); 
    
  • +0

    Adilに助けてもらったことがありますが、これは私のケースではうまくいくとは思えません。私はその特定のユーザーにクリックイベントを追加することでプライベートメッセージをクライアントに送信します。メッセージを送って、私は別のものを試しました、私はサーバー側で何かを変更する必要があることを知っています: – cickStar

    +0

    ああ、決して心配していただきありがとうございます:) – cickStar

    +0

    歓迎@ZaimSofia – Adiii

    関連する問題