2017-06-16 9 views
0

nodejsにnetモジュールを使用しています。ノードtcpサーバーのデータをまとめて

net.createServer(function(sock) { 
sock.on('data', function(data) { 
    console.log(data); 
}); 
}); 

次に、2000 tcpクライアントを使用して、サポートできるクライアント数をテストするためにサーバーにデータを送信しようとしました。最初の20分間はOKだった。しかし、しばらくすると、データが一緒になってしまいました。例えば、クライアントからのデータはJSON形式であり、このように見える:

「{ 『値』:1、 『名前』: 『トム』}」

各クライアントは、別の名前を使用してデータを送信しました値は毎回増分されます。サーバー側から見ると、データは次のようになります。

{"value":1、 "name": "tom"} {"value":2、 "name": "tom"} {"value ":3、" name ":" tom "}。

彼らは一緒に固執する、私はそれらを分割し、mongodbに保存する必要があります。

サーバーの動作時間を長くすると状況が悪化していました。クライアントがデータを送信している間は、サーバーはデータを受信できません。

私は毎回1つの項目を読むようにサーバを設定する方法を尋ねたいと思いますし、サーバは動作し続けるとうまく動作します。どうもありがとう。

答えて

0

ソケットサーバーは、データ形式を知らない、または気にしません。何があっても、それを分割する必要があります。アプリケーションに到達する前に、任意にバッファリングまたは分割することができます。より低い負荷で素敵なセグメントに仕上がっているという事実は、あなたのペイロードが単一のパケットに収まることと、読み込みバッファが来るのを待っていることによるものです。

最も簡単なことは、区切り文字を使用することです。 JSONを使用しているので、改行の区切り文字を使用できます。

ストリームをバッファリングし、区切り文字を待って、解析されたオブジェクトを出力する変換ストリームを使用できます。

-1

node.js stick package

あなたは、このリンクは質問に答えるかもしれないが、ここでは答えの重要な部分を含める方が良いです、Node.jsの

+0

のためのTCPの粘着性のパッケージの問題の解決策を、このLIBを試してみて、参照のためのリンクを提供する。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 18167277) – klutt

関連する問題