2011-12-06 17 views
6

Próbuję przesłać dane z node.js do Java przez gniazda. Szukałem, ale nic nie było naprawdę przydatne. Jestem przyzwyczajony do socket.io, ale w tym przypadku nie wydaje mi się to odpowiednie. Wygląda na to, że wszystkie rozszerzenia gniazd dla node.js nie są odpowiednie do wysyłania wiadomości, ale raczej do słuchania wiadomości i odpowiadania na coś.Wysyłanie danych z node.js na Javę przy użyciu gniazd

Moja aplikacja Java zasadniczo powinna otrzymać trochę pracy do wykonania z node.js, wykonać pracę i wysłać wynik do pliku node.js. I nie, praca nie może być wykonana na węźle node.js, musi to być zrobione przez Javę (która w rzeczywistości jest Scala, ale cokolwiek).

Czy ktoś z was wie, jak mogę zrobić coś takiego?

Dzięki

+0

Czy brałeś pod uwagę wbudowany [net.Socket] (http://nodejs.org/docs/latest/api/net.html#net.Socket)? –

+0

Uaktualniłem do ostatniej wersji węzła i wygląda na to, że rzeczy sieciowe nie mają metody ".connect", więc nie mogę ich użyć. Nie wiem dlaczego. – Masiar

Odpowiedz

14

Możesz skorzystać z wbudowanych w gnieździe w node.js zrobić coś takiego (bardzo łatwy zarówno w java i node.js, ale dostaniesz punkt):

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(); 

a link do node.js doc o gniazdach : http://nodejs.org/docs/latest/api/net.html

+0

Dzięki za odpowiedź! Mam inny problem: kiedy robię 'net.connect (...)' kompilator węzłów narzeka mówiąc 'Obiekt # nie ma metody 'connect'', czy wiesz co się dzieje? – Masiar

Powiązane problemy