2016-11-02 59 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

相关问题