2016-03-21 10 views
1

Socket.ioは自分宛てのメッセージを表示しません。 例Socket.io、自分宛てのメッセージ

var id = 333; 
socket.broadcast.to(id).emit('user', user); 

のためにそれは良い作業が、メッセージは、クライアントの#333であるが、送信されたメッセージよりも、ユーザは、メッセージクライアントにコピーを持っていません。

私はこの方法で解決したかったが、それは

socket.broadcast.to(socket.id).emit('user', user); 

なぜ動作しませんか?より多くのコードなし

+0

私はあなたがここで達成しようとしていることにはほとんど従っていません。 'socket.id'は現在のユーザのソケットIDです(waaayyyはありません)。あなたはその問題について詳しく説明できますか? –

+0

@SterlingArcher私のすべてのユーザはsocket.idによって識別されますが、メッセージは送信者ではなく受信者にのみ表示されます。 – Emerceen

+0

私はそれを取得しない...あなたは何が起こりたいですか?あなたが何をしたいのかの入力と出力の例をいくつか追加してください。 –

答えて

0

あなたが欲しいものを言うのはその硬いが一つのことは、あなたがそのsocketオブジェクトを使用して、私の知る限りbroadcastが唯一知っているようsocket.emit

を使用する必要があり、単一のユーザーにメッセージを送信するためには確かですあなた自身を除いてみんなに伝えるために使われた。

何それはユーザーを追跡することになると私は通常行うことは、私は次のように持っている:

var userList = []; 
io.on('connection', function (socket) { 

    socket.on('userData', function (userDetails) { 
     userDetails.socket = socket; 
     userList[userDetails.id] = userDetails 
    }); 
}); 

Basiclyユーザーが自分のソケットに接続し、ユーザーのためのページが完全にロードされ、それはそのIDを送信するときあなたが望むのであればトークン(またはトークン)を入力して、ユーザーのsocketをリストにマップするので、そのユーザーに送信したい場合はすぐにもう一度手に入れることができます。


例は次のようになります。

user.id = 33は、一度ユーザーがソケットは、その後採取しにリストに入れている

当社のサーバーuserData機能に発するロード

当社のサーバーに接続します行33

これが必要なときは、次のコードを使用してユーザーを取得できますsocket

socket = userList[33]; 

か、我々は、オブジェクトがある場合:私はこれがあなたの役に立てば幸い

socket = userList[user.id]; 

を。

関連する問題