2011-12-06 13 views
6

node.jsからソケットを介してJavaにデータを送信しようとしています。 私は周りを検索しましたが、本当に有用なものはありませんでした。私はsocket.ioに慣れていますが、この場合は実際にはこれに適していないようです。 node.jsのすべてのソケット拡張機能はメッセージの送信にはあまり適していないようですが、メッセージを聞いて何かに答えることができます。ソケットを使用してnode.jsからJavaにデータを送信する

私のJavaアプリケーションは、基本的にnode.jsから何か作業を受け取り、作業を行い、結果をnode.jsに戻します。そして、いいえ、node.jsで作業を行うことはできません。Java(実際はScalaですが、それは何でも構いません)で行う必要があります。

誰かがこのようなことをどうやって行うことができるか知っていますか?

おかげ

+0

組み込みの[net.Socket](http://nodejs.org/docs/latest/api/net.html#net.Socket)とは考えましたか? –

+0

私はノードの最後のバージョンにアップグレードしました。ネットのものは '.connect'メソッドを持たないようですので、私はそれらを使うことができません。理由はわかりません。 – Masiar

答えて

14

あなたはそのような何かを行うにNode.jsの中でソケットにビルドを使用することができます(両方のJavaとNode.jsの中には非常に簡単に、しかし、あなたはポイントを取得します):

のJava :

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class Test { 

    public static void main(String[] args) { 
     ServerSocket server; 
     Socket client; 
     InputStream input; 

     try { 
      server = new ServerSocket(1010); 
      client = server.accept(); 

      input = client.getInputStream(); 
      String inputString = Test.inputStreamAsString(input); 

      System.out.println(inputString); 

      client.close(); 
      server.close(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static String inputStreamAsString(InputStream stream) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(stream)); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 

     while ((line = br.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 

     br.close(); 
     return sb.toString(); 
    } 

} 

のNode.js:

var net = require('net'); 

var client = net.connect(1010, 'localhost'); 

client.write('Hello from node.js'); 

client.end(); 

とソケットについてNode.jsのドキュメントへのリンク:http://nodejs.org/docs/latest/api/net.html

+0

返信いただきありがとうございます!私は別の問題があります: 'net.connect(...)'を実行すると、ノードコンパイラは 'Object#にはメソッド 'connect''がないと言っていると文句を言うのですが、何が起こっているのか分かりますか? – Masiar