2017-03-23 6 views
0

ソケットを使用してクライアントからサーバーにJSONデータを送信し、サーバーからNode.jsのクライアントに応答を送信するプログラムがあります。これはほとんどの場合かなりうまく動作しますが、ソケットからサーバから大量のデータを送信する問題にぶち当たっています。 1つの特定のケースでは、サーバーがJSONデータを送信しようとしたときに、JSON.stringifyがメモリ不足のため、RangeErrorを返していました。私はmsgpackを使用してこれを解決し、ストリーミングを使用しようとしましたが、クライアント側で実行するには時間がかかりすぎているようでした。Nodeのローカルソケットで大量のデータを送信するにはどうすればよいですか?

Node.jsのネットワークで大量のデータをプレーンソケットよりも送信する方が良いでしょうか?

+0

Err、 'stringify()'を使用しないでください。同時にメモリ内のメッセージ全体に依存するものは使用しないでください。ストリーミングAPIを使用しますか?もちろん、あなたの質問は**どのように送っているかについては**ではありません。 *受信する方法についてです。* – EJP

+1

@EJP「JSON.stringify」を使用したことを超えて読んだことはありますか?私は 'msgpack'とストリーミングを使っていると明言していますが、これで問題は解決しませんでした。 – josh

答えて

0

この提案があなたの場合に役立つか、実行可能かどうかはわかりません。何らかの理由でJSON送信されたserver - > clientを書き留めると、メモリが足りなくなり、範囲エラーが報告されます。ストリーミングとmsgpack(Node.jsで想定)を試しても動作しなかったので、はクライアント側のエラーに直面しているようです。

私が見ることができる唯一の解決策は、JSONを2つまたは3つに分割すること(サイズが制限されていても何でも)をソケットに送信し、反対側でそれらをマージすることです。 JSONファイルの実際の大きさ(msgpackの前後)やストリーミングのバッファーには特定の情報がないので、これは唯一実行可能な解決策であると思われます。

関連する問題