2016-11-02 58 views
1
server.js 
var net = require('net'); 
var client = net.connect(4567, 'localhost', function() { 
client.write("hello"); 

client.on('error', function(ex) { 
    console.log(ex); }); 

client.end(); 
}); 

client.java 
server = new ServerSocket(4567); 
client = server.accept(); 
InputStream input = client.getInputStream(); 
String inputString = MyClass.inputStreamAsString(input); 
system.out.println(inputString); //inputString gives me "hello" 

client.java是運行每5秒的時間調度程序,它會嘗試獲取從節點和打印出來的文本。我不想關閉Node上的套接字,這樣我就可以在client.java發送另一條消息時發送消息。我有2個問題的NodeJS:如何保持節點服務器 - > Java客戶端連接打開

  1. 除去client.end()不發送調度的任何消息
  2. 具有client.end()在第一週期(5秒),但是當它運行第二循環(第六工作第二)我有錯Java.net.SocketException:套接字已關閉。

如何不能在Node中結束我的套接字並能夠發送消息到調度器?

回答

0

你看過網絡模塊的allowHalfOpen選項嗎?

var client = net.connect({port: 4567, allowHalfOpen: true},function() { 
    //etc 
}; 
+0

我做到了,但我沒有立即發送所有消息並關閉連接。我的前端連接到節點發送一條消息(在用戶點擊時命令類似於「start/stop」,所以點擊它應該發送總是運行的調度器一個命令(start/stop)。現在消息只發送一次,套接字在調度程序的第二個週期關閉,因爲我做了client.end – LisaA

相關問題