2012-12-18 23 views
0

我想從我的Java類連續數據發送到Node.js.But我無法趕上他們all.I只收到第一個從Java發送..這裏是我的Java類和NodeJs.I想要製作代碼,以便NodeJs能夠從Java Class捕獲連續的數據。如何將Java Class中的連續數據傳遞給NodeJs?

import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.Socket; 
import java.io.*; 

class NodeCommunicator { 

public static void main(String[] args) { 
try { 
    Socket nodejs = new Socket("localhost", 8080); 
    Thread.sleep(100); 
    for(int i=1; i< 100; i++){ 
      Thread.sleep(500); 
      sendMessage(nodejs, i + " "); 
     System.out.println(i + " has been sent to server"); 
    } 

    } catch (Exception e) { 
    System.out.println("Server Closed..Something went Wrong.."); 
     e.printStackTrace(); 
    } 

    } 
     public static void sendMessage(Socket s, String message) throws IOException { 
       System.out.println("In SendMesage"+message); 
      s.getOutputStream().write(message.getBytes("UTF-8")); 
      s.getOutputStream().flush(); 
     } 
     } 

Node.js的

var javaPort = 8080; 
var javaServer = require('net').createServer(); 
var WebSocketServer = require('ws').Server 
, wss = new WebSocketServer({port: 90}); 

var fileData ; 

console.log('====================================================='); 
console.log('Node.js/Java Communication Module'); 
console.log('====================================================='); 

javaServer.on('listening', function() { 
    console.log('Server is listening on ' + javaPort); 
}); 

javaServer.on('error', function (e) { 
    console.log('Server error: ' + e.code); 
    }); 

javaServer.on('close', function() { 
    console.log('Server closed'); 
}); 

    javaServer.on('connection', function (javaSocket) { 
    var clientAddress = javaSocket.address().address + ':' + javaSocket.address().port; 
    console.log('Java ' + clientAddress + ' connected'); 

    var firstDataListenner = function (data) { 
      fileData = data; 
     console.log('Received namespace from java End: ' + data); 
     //javaServer.send(data); 
     javaSocket.removeListener('data', firstDataListenner); 
    } 

javaSocket.on('data', firstDataListenner); 

javaSocket.on('close', function() { 
     console.log('Java ' + clientAddress + ' disconnected'); 
}); 
}); 
javaServer.listen(javaPort); 
+2

您是否應該在第一次獲取數據時真正刪除數據偵聽器? –

+0

謝謝@RogerLindsjö..它的作品 –

回答

2

接收到所述第一消息時,要刪除的數據偵聽器。刪除它,它應該工作。

var firstDataListenner = function (data) { 
     fileData = data; 
    console.log('Received namespace from java End: ' + data); 
    //javaServer.send(data); 
} 
相關問題