0

私はソケットを使って練習するためだけに小さなパーティー システムを作ろうとしています。

ページの読み込み時にユーザー名を要求し、すべてのクライアントにユーザー名の ID を持つアンカーである新しいユーザー名を入力します。アンカーがクリックされると、特定のクライアントにパーティーに招待するリクエストを送信します。

リンクを送信する部分にほぼ到達しました。これまでのところ、次のとおりです。

socket.on('adduser', function(username) {
  socket.username = username;
  socket.clientId = socket.id;
  usernames[username] = username;
  console.log(socket.id);
  socket.emit('updatechat', 'SERVER', 'You have connected.');
  io.sockets.emit('updateusers', usernames);
  console.log(usernames);
});

新しいユーザーを作成するため

socket.on('updateusers', function(data) {
  var users = document.getElementById('users');
  users.innerHTML = '';
  for (var key in data) {
    var a = document.createElement('a');
        a.id = key;
        a.href='#';
        a.innerHTML = key;
    users.appendChild(a);
    users.appendChild(document.createElement('br'));
    document.getElementById(key).addEventListener('click', function() { 
      inviteUser.call(this); 
    });
  }
});

クライアント側の

エミットを全員ではなく特定のユーザーに送信する方法について混乱しています。

通常socket.emit、何かを要求したユーザーにエミットを送信しますが、今は他の誰かに送信する必要があります

オブジェクトに socket.id を格納し、ユーザー名に一致する ID にリクエストを送信することを考えていましたが、特定の ID に送信するにはどうすればよいですか?

TL;DRsocket.id : エミットを特定の人に送信して、特定の人だけがリクエストを受け取るようにするにはどうすればよいですか。

みんなありがとう :)

4

1 に答える 1

-1

そのためにクライアントを取得する必要があります。簡単な方法で行くことができます。

var io = io.listen(server);

io.clients[sessionID].send();

これは壊れるかもしれませんが、疑いはほとんどありませんが、常に io.clients が変更される可能性があるため、上記を注意して使用してください

または、自分でクライアントを追跡するため、接続リスナーで独自のクライアント オブジェクトに追加し、切断リスナーで削除します。

于 2013-05-13T18:31:14.370 に答える