1

私は、socket.io の「部屋の作成」メソッドを介して部屋を作成した人が次の行に沿って何かを作成した場合、ロジックが述べているスクリプトに取り組んでいます。

client.on("createRoom", function (name) {
    client.room = name;
    client.join(client.room);
    client.emit("update", "Welcome to room:" + name + ".");
});

別の方法で複数の人が同じルームに参加できます。私の質問は、ソリューションを実装する方法です-ルームの所有者(socket.ioによって生成された一意のIDがスクリプトに保存され、「所有者」として記録されます)がサーバーから切断された場合、所属する他のすべての接続されたクライアント同じ部屋へも切断?client.leave() メソッドを使用する必要があることはわかっていますが、それを複数のクライアントに適用する方法がわかりません。

4

1 に答える 1

0

クライアントをオブジェクトとして配列に格納します。部屋番号と、部屋を所有しているかどうかをプロパティに保存します。切断イベントで、問題のユーザーのプロパティを確認し、そうであれば、プロパティが切断している所有者のプロパティと一致するownsroom他のクライアントを検索する配列をループします。roomidif ステートメントclients[i].roomid == disconnected.roomidが true の場合、leave 関数を呼び出して接続をドロップします。

var i = 0;
while(i < clients.length){
    if(clients[i].room == disconnected.room)
        clients[i].leave();
    ++i;
}
于 2013-07-15T19:44:52.160 に答える