通常、あるクライアントから別のクライアントにJSONを送信すると、正常に動作します。しかし、クライアントが1つだけの場合でも、パケットは送信されます。私の解決策は、(Node.jsの中に、サーバー側で)にした:クライアントとのジレンマclients.length(clients === io.sockets.clients();)
var clients = io.sockets.clients();
if(clients.length > 1){
// send stuff to other client
}
をしかし、私はそれを行う際に、非常に奇妙な何かが起こります。私はクライアントをオープンし、ifステートメント中にアクションを開始し、送信する前にJSONを印刷するコンソールはクライアントが1つしかないので何もしません。別のクライアントを開いてifステートメント中にアクションを起動すると、コンソールはJSONを出力して他のクライアントに送信します。しかし、私が最初のクライアントに行き、if文でアクションを起動して踏み込んだ場合、コンソールは何も出力せず、何も送信しません。どうして?
if("hello" === "hello"){
// do the same stuff as before
}
をし、両方のクライアントが相互にJSONを送ることができますが、私はまだ役に立たないパケットを送信し、オープン1つのクライアントで、if文を変更していたので、私は言ってif文を変更してみました。明らかな理由から、最適な状況は、1つのクライアントでパケットを送信せず、複数のパケットで適切にパケットを送信する場合です。
私はそれがはっきりしていたことを願っています。
私が必要な場合は、コードを投稿します。
EDIT:
ここでは、配列を更新するコードです:
var clients = io.sockets.clients();
io.sockets.on("connection", function (socket) {
clients.length++;
socket.on("disconnect", function() {
clients.length--;
console.log(clients.length + " clients are connected");
});
console.log(clients.length + " clients are connected");
});
これは、最初のクライアントを一度開くと発生します。明確にするために、第2のクライアントを開いた後に最初のクライアントをリフレッシュすると、それが私の行うことである – Matt