2015-10-18 62 views
0

我有以下的Node.js代碼:通過套接字結合Java和Node.js的

var http = require('http'); 

http.createServer(function(req, res)) { 
    console.log("URL request"+req.url); 
    res.writeHead(200, {'Content-Type':'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(9898, '127.0.0.1'); 

console.log('Server locally running at http://127.0.0.1:9898/'); 

我在Java中使用Socket類使一個插座也連接到端口9898。我想無論Node.js寫入(在本例中爲'Hello World'),由Java類處理。到目前爲止,這是我對Java類:

Socket s = new Socket(serverAddress, 9898); 
BufferedReader input = 
     new BufferedReader(new InputStreamReader(s.getInputStream())); 

我的問題是我怎麼得到的「Hello World」,由Java代碼來讀取,所以,每當我打電話System.out.println(input.readLine()),它打印「你好,世界'?

+0

這是什麼問題?它無法連接或連接,但它不讀取任何東西?另外,你不需要編寫'res.writeHead(200,{'Content-Type':'text/plain'});'因爲你只是在TCP層打開一個原始套接字,所以不需要HTTP代碼那裏。 – ESala

+0

嗨。我不熟悉java,但從節點方面看來,您可能希望某種webservice在聯繫時與hello world進行響應?在這種情況下,您可以讓java訪問運行節點服務器的URL:端口以獲取結果。我的方法不使用websocket連接。 websocket連接對於您的工作至關重要?特別是因爲在這個例子中你使用的是localhost,這意味着沒有網絡延遲。 – X0r0N

+0

@Darken是的,Java代碼不會讀取任何內容。它不在控制檯中打印「Hello World」?爲什麼。但是當我停止服務器(在端口上運行)時,在控制檯上寫入'null'。感謝您的幫助 – user5139637

回答

0

你有一個額外的「)」在第三行,但你的代碼似乎工作,否則:

var http = require('http'); 

http.createServer(function(req, res) { 
    console.log("URL request"+req.url); 
    res.writeHead(200, {'Content-Type':'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(9898, '127.0.0.1'); 

console.log('Server locally running at http://127.0.0.1:9898/'); 

我猜你需要創建一些Java功能,使一個HTTP請求的URL:端口節點服務器正在運行。它可能不會像'input.readLine()'那麼簡單。

也許像這樣將有助於獲取Java代碼從節點獲取數據:

How can I get an http response body as a string in Java?

+0

我正在製作網絡應用程序。在這個應用程序中,用戶輸入一些東西這個字符串(用戶輸入的)需要被髮送到一個java類,它可以處理輸入,然後將其發送回javascript,然後將其發佈到屏幕上。我在JavaScript和Java之間選擇的是node.js.最好的方法是什麼?我需要對Node.js代碼做出我想做什麼更改。我是Node.js(也是java)的初學者,所以我很感激所有幫助 – user5139637