FFアドオンからJavaサーバーにソケットを介して書きます。私はいくつかのリクエストを書いており、サーバーはそれらを1つずつ処理しているようです。対照的に、サーバーからの応答はすべて同時に処理されます。コード内のソケットをフラッシュする方法
サーバでアウトストリームをフラッシュしてみましたが、何もしません。私は何が起こっているのか分からない。
ご協力いただきありがとうございます。
EDIT1:アドオン(クライアント)が入力ストリームをフラッシュしていない可能性がありますか?私はjavaサーバでout.printlnを使用していますので、 '\ n'は出力ストリームをフラッシュし、ネットライブラリはwrite.flush()を使用しますが、入力に対して他のフラッシュは表示されません。
EDIT2は:ここに私のコードです:
Client > hi1
Client > hi2
Server > bye1
Server > bye2
そして、それは次のようになります:
exports.main = function() {
try {
// At first, we need a nsISocketTransportService
var transportService =
Cc["@mozilla.org/network/socket-transport-service;1"]
.getService(Ci.nsISocketTransportService);
// Try to connect to localhost:2222
var transport = transportService.createTransport(null, 0, "localhost", 6666, null);
var stream = transport.openInputStream(Ci.nsITransport.OPEN_UNBUFFERED,null,null);
var instream = Cc["@mozilla.org/scriptableinputstream;1"]
.createInstance(Ci.nsIScriptableInputStream);
// Initialize
instream.init(stream);
var outstream = transport.openOutputStream(0, 0, 0);
var dataListener = {
onStartRequest: function(request, context){},
onStopRequest: function(request, context, status){
instream.close();
outstream.close();
},
onDataAvailable: function(request, context, inputStream, offset, count) {
var data = instream.read(count);
console.log(data);
},
};
var pump = Cc["@mozilla.org/network/input-stream-pump;1"]
.createInstance(Ci.nsIInputStreamPump);
pump.init(stream, -1, -1, 0, 0, false);
pump.asyncRead(dataListener, null);
// Write data
console.log("hi1");
var outputData = "hi1\n";
outstream.write(outputData, outputData.length);
// Write data
console.log("hi2");
var outputData = "hi2\n";
outstream.write(outputData, outputData.length);
} catch (e){
console.log("Error" + e.result + ": " + e.message);
return e;
} return null;
};
だから、私はそれを実行すると、私が手
Client > hi1
Server > bye1
Client > hi2
Server > bye2
コードなし、ヘルプなし。 –
@MarkoTopolnik:あなたが見たいと思ったら、いくつかのコードを追加しました。 – synack
これをJavaとタグ付けしましたが、問題のJavaとの関連はありません。タグを付けなかった場合、この会話はできません。私はJavaScriptの専門家ではない。 –