1

TCP ソケット経由でノード サーバーに接続していますが、ソケットに書き込まれるデータが後続の各呼び出しで複製されるという問題があります。

私のサーバーは、接続されている各クライアントに書き込む次の関数を呼び出します。

clients.forEach(function (client) {
    var string = "hello";
    client.write(string);
    client.on('data', function(data) {
        console.log(data.toString());
    });
});

これは機能し、接続された各ソケットに文字列「hello」をブロードキャストします。これは、各クライアントが console.log に出力される応答で応答するという考え方です。

各クライアントには、次のものがあります。

client.on('data', function(data) {
    console.log(data);  
    var response = "Hello back";
    console.log('RES: ' + response);
    client.write(response);
});

各クライアントは hello を受信し、リクエストに応答します。N 回の応答ごとに、サーバーが各クライアントからすべてを N 回受信するという問題が発生します。

したがって、最初の交換では単純に

こんにちは

ハローバック

しかし、2番目は次のとおりです。

こんにちは

ハローバック

ハローバック

なぜこれが起こっているのでしょうか?各取引所などでソケットをフラッシュする必要がありますか?

4

0 に答える 0