ノードjsで簡単なサーバーを作成しました。
var tls = require("tls"), fs = require("fs"), sys = require("sys");
//Number of messages received
var received=0;
var options = {
key: fs.readFileSync("certs/keys/server.key"),//Server private key
cert:fs.readFileSync("certs/certs/server.crt"),//Server cert.
requestCert: true,//Require client to send it's certificate
rejectUnauthorized:true,
ca:fs.readFileSync("certs/certs/userA.crt") //Root certificate,
};
//Server instance with connection request callback
var server = tls.createServer(options,function(socket){
//Add a listener for receiving data packets
socket.addListener("data", function(data){
received++;
});
}).listen(2195,function(){
console.log("Server started");
});
サーバーへの複数(300)の接続を確立してメッセージを送信するJavaクライアントアプリケーションもあります。問題は、変数「received」の値が Java 側の「send」の値と一致しないことです。為に。たとえば、Java アプリケーションから 100,000 件のメッセージを送信すると、すべてのメッセージがサーバーによって正常に受信されたにもかかわらず、サーバーは受信値を 80,000 と表示します。
問題は、受信した変数が複数のコールバックによって同時に更新され、最終的な値が台無しになっていることだと思います。これを解決する方法について何か考えはありますか?