data send by firefox tcp socket.send () kann nicht abgerufen werden, bis der Socket geschlossen wird

Ich versuche, einige Daten von Firefox an die Java-Desktop-Anwendung zu senden. Also funktioniert meine Java-Klasse als Server und das Firefox-Skript als Client. Wenn ich es mit einer anderen Java-Klasse teste, die @ iclient.java Daten erfolgreich an @ gesendserver.java Wie auch immer, wenn ich dieses Firefox-Skript zum Senden von Daten verwende, wird tatsächlich eine Verbindung zum Server hergestellsend("text"); funktioniert nicht in Echtzeit .Ich meine, Server zeigt empfangene Daten, wenn ich den Socket schließe.socket.close();. aber ich weiß, es gibt kein Problem mitserver.java code.

dies funktioniert nicht

setTimeout(function(){socket.send("i'm firefox");},5000); // because socket isn't closed yet

diese Arbei

setTimeout(function(){socket.send("i'm firefox");},5000);
setTimeout(function(){socket.close();},6000); 

Aber ich möchte den Socket wirklich nicht schließen, weil ich viele Daten nacheinander senden möchte.

hier ist der komplette Code auf Scratchpad getestet [-browser]

var tcpSocket = Cc["@mozilla.org/tcp-socket;1"].createInstance(Ci.nsIDOMTCPSocket);
var socket = tcpSocket.open("127.0.0.1", 5000);

setTimeout(function(){socket.send("i'm firefox");},5000);
//setTimeout(function(){socket.close();},8000);// i'm firefox text retrieve by server when run this line / when close the socket.

Ich denke, Java-Code ist nicht wichtig. AberHie es ist

Ich frage, warum muss ich den Socket schließen, um Daten zu senden? und wie kann ich daten senden ohne den socket zu schließen?

aktualisiere

i hat ein Gif gemachtm mein Problem hier zu zeigen, können Sie sehen, dass Daten nicht in Echtzeit gesendet werden, aber wenn der Socket geschlossen ist, werden alle Daten gelösch

Antworten auf die Frage(2)

Ihre Antwort auf die Frage