2017-05-30 3 views
0

私はプライベートメッセージを送信できる小さなチャットアプリケーションを作成しようとしています。選択されたsocketidに転送します。私はSockeIOのドキュメントを見て、うまくいく解決法を見つけることができた。すべての接続されたソケットが送信されたメッセージを受信したブロードキャストイベントを使用してテストしたため、アプリケーションは正常に動作します。どのように個人的なメッセージを達成するために?個々のsocketid(プライベートメッセージ)への送信はsocketIOで動作しません

これは私が試したコードです。 。

私は socket.toを()を使用している
socket.to(sockets[data.receiver]).emit('receive',data.message); 

は( 'ちょっと'、 '私はあなたに会った')放出します。 socketioのドキュメントとソケットで指定された例[data.receiver]は、メッセージの送信先のsocket.idを出力します。

+0

データを送信したいクライアントのソケットを選択して通常のsocket.emitを作成するだけです –

+0

さらに詳しいコード例も参考になります –

+0

@SebastiánEspinosaThats私が試したことはありますが、正常ではないsocket.emit?私は選択されたソケットにデータを送信するために、これ以外の方法は見つかりませんでした。 –

答えて

0

は次のように考えてみましょう:

class Connection { 
     constructor(name, socket) { 
       this.name = name; 
       this.socket = socket; 
     } 
} 

let connections = []; 

socket.on('connection', (socket) => { 
     // Get a name for the user/connection 
     // ... 
     // let name = getUsername(socket); 

     connections.push(new Connection(name, socket)); 
}); 

let sendToName = (name, message) => { 
     for(let i = 0, len = connections.length; i < len; i++) { 
       if(connections[i].name === name) { 
         connections[i].socket.emit('message', message); 
         break; 
       } 
     } 
}; 

はもちろん、あなたが名前以外のものを使用することができますが...しかし、あなたのアイデアを得ます。

+0

同様のものを試しましたが、socket.idをユーザーの名前で保存してユーザーに送信しますが、**ソケット.to(socket.id).emit( 'chat'、 'message'); **機能は動作しません。あなたのコードを試してみましたが、それは動作していません。 –

+0

あなたはそのユーザー/接続の特定のソケットを扱っているときにsocket.toを必要としません。socket.emit( 'chat'、message)だけです。私が投稿したコードは、完全な例ではなく、より良い方向性の考え方を与える定型文です。 – mernstacking

関連する問題