Socket.io は、特定のユーザーへの個人情報の送信を実装します (Express フレームワークに基づいて)

今日は、ソケットのもう 1 つの要件を見てみましょう。個人情報を特定のユーザーに送信するが、他のユーザーは受信できないようにする実装は、
最初の 2 つのブログの内容に基づいています。サーバーがセットアップされていて、そこにあると仮定します。は単純な HTML ページです。
最初のステップは、express バックエンドに Personal と呼ばれるソケット リスニング関数を追加することです。次に、io に接続されているすべてのソケット オブジェクトをホストする Connectedusers オブジェクトを定義し、後で使用できるように保存する必要があります。全体的なアイデアも上記の条件に基づいています。ソケットから渡された一意の ID に従って、すべてのソケットを Connecteduser にバインドします。後で、ID に基づいてそのソケットにインデックスを付け、それをユニキャストできます。コードは次のとおりです: ExpressバックエンドのSocketio
ページ

var connectedusers={
    
    }    //定义大对象
//修改message函数,让用户一旦发送信息,就记录他们的id。
socket.on('message',function(obj)
        {
    
    
            socket.userid=obj.userid
            connectedusers[socket.userid]=socket  //将这个用户,根据他们的id作为对象的索引,绑定到connectedusers身上
            io.emit('message',obj)
            console.log(obj.userid+'说:'+obj.content);
        })
socket.on('personal',function(userid)    //添加personal监听函数
        {
    
     
            console.log(userid);
            if(connectedusers.hasOwnProperty(userid))  //先根据id搜索有没有这个用户
            {
    
    
                connectedusers[userid].emit('personal',socket.userid)   //通过索引得到对应用户socket,然后emit触发前端函数
            }
            else
            io.emit('personal','所有人')   //没有那个用户就广播
        }) 

上記のコードでは、簡単にするためにメッセージを直接変換しましたが、完全を期すためには、ログイン関数を定義してラージ オブジェクトにバインドする関数を実装する必要があることに注意してください
その後、情報を表示するための個人用関数をフロントエンドに記述するだけです。

this.socket.on('personal',function(userid)
        {
    
    
            console.log('收到来自'+userid+'的信息');
        })

このロジックの結果、フロントエンドのユーザーは別のユーザーの ID を知っており、個人関数を使用して個人情報を送信したいユーザーの ID を渡し、それを実行すると、他のユーザー (ステーションは「××× から受信したメッセージ」を出力します。ここで、××× は情報を送信したユーザー ID (ブラウザ ウィンドウの一番左)、送信されたユーザーを除く、その他のユーザー ID です。ユーザーはそれを受け取りません(以下のように) 画像の中央にあるブラウザ)、レンダリングは次のとおりです:
ここに画像の説明を挿入します
最初は難しく感じましたが、書いてみると、非常に簡単であることがわかりました〜

おすすめ

転載: blog.csdn.net/weixin_51295863/article/details/131688552