1. ホーム
  2. javascript

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

2022-09-20 16:04:46

質問

私はsocket.io + node.jsで始めています、私はローカルにメッセージを送信する方法とブロードキャストする方法を知っています。 socket.broadcast.emit() 機能:-接続されているすべてのクライアントは、同じメッセージを受信します。

今、私は特定のクライアントにプライベートメッセージを送信する方法を知りたいのですが、私は2人(クライアントからクライアントへのストリーム)間のプライベートチャット用の1ソケットを意味します。ありがとうございます。

どのように解決するのですか?

ユーザーが接続するとき、ユーザー名と一緒にサーバーにメッセージを送る必要があります。これは電子メールのように一意でなければなりません。

ユーザー名とソケットのペアは、このようなオブジェクトに格納されます。

var users = {
    '[email protected]': [socket object],
    '[email protected]': [socket object],
    '[email protected]': [socket object]
}

クライアント側で、以下のデータを持つオブジェクトをサーバに発行します。

{
    to:[the other receiver's username as a string],
    from:[the person who sent the message as string],
    message:[the message to be sent as string]
}

サーバー上で、メッセージを待ち受けます。メッセージを受信したら、そのデータを受信者に向けて発信する。

users[data.to].emit('receivedMessage', data)

クライアント側では、サーバーからの'receivedMessage'というemitsをリスニングし、そのデータを読むことで、誰から来たのか、どのようなメッセージが送られたのかを処理することができます。