1. ホーム
  2. javascript

[解決済み] socket.ioとnode.jsで特定のクライアントにメッセージを送信する。

2022-02-18 23:08:31

質問

socket.ioとnode.jsを使っていて、今までは結構いい感じだったのですが、サーバーから特定のクライアントにメッセージを送る方法がわかりません、以下のような感じです。

client.send(message, receiverSessionId)

しかし .send().broadcast() メソッドは、私のニーズを満たしてくれるようです。

私が可能な解決策として見つけたのは .broadcast() メソッドは、メッセージを送信しないSessionIdsの配列を第2パラメータとして受け入れます。したがって、私はメッセージを送信したいものを除いて、その時点でサーバーに接続されているすべてのSessionIdsの配列を渡すことができましたが、私はより良い解決策があるはずだと感じています。

何かアイデアはありますか?

解決方法は?

まあ、そのためにはクライアントをつかまえなければならないのですが(驚)、簡単な方法をとることもできます。

var io = io.listen(server);
io.clients[sessionID].send()

が壊れる可能性はありますが、私はそうは思いません。 io.clients 変更される可能性があるので、上記は注意して使用してください。

あるいは、クライアントを自分で管理するため、クライアントを自分自身の clients オブジェクトを connection リスナーで削除し disconnect のリスナーです。

アプリケーションによっては、クライアントでより多くの状態を保持したい場合があるので、私なら後者を使用します。 clients[id] = {conn: clientConnect, data: {...}} で済むかもしれません。