Javaクライアントが画像を送信する単純なNodeJSTCPサーバーを作成しました。
encodedImage = <a base64 encoded image>
out.write("IMG;" + encodedImage);
out.flush();
私のNodeJSサーバーは次のとおりです。
net.createServer(function(TCPSocket){
TCPSocket.on("data", function(data){
console.log("TCP Recieved: " + data.length);
});
}).listen(5000);
ただし、すべてのデータを送信してすぐにフラッシュしても、出力は次のようになります。
TCP Recieved: 13
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1472
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
TCP Recieved: 1344
単純なチャンクで受信したいのですが、NodeJSのイベント処理メカニズムが原因で発生していると思います。単一のチャンクとして送信されるデータに対して、単一のデータチャンクを実現するための最良の方法は何ですか?私の知る限り、TCPウィンドウは1344バイトのデータよりもはるかに大きくなる可能性があります。ヘッダー値をHTTPとして使用することを考えたので、必要なオブジェクトを構成する長さの広告がわかりました。