2011-12-06 17 views
6

Estoy tratando de enviar datos de node.js a Java a través de sockets. Busqué pero nada fue realmente útil. Estoy acostumbrado a socket.io, pero en este caso no parece realmente adecuado para esto. Parece que todas las extensiones de socket para node.js no son realmente adecuadas para enviar mensajes, sino más bien para escuchar mensajes y responder algo.Enviando datos de node.js a Java usando sockets

Mi aplicación Java básicamente debería recibir algo de trabajo de node.js, hacer el trabajo y enviar algún resultado a node.js. Y no, el trabajo no puede hacerse en node.js, tiene que ser hecho por Java (que en realidad es Scala pero lo que sea).

¿Alguien de ustedes sabe cómo puedo hacer algo como esto?

Gracias

+0

¿Ha considerado el built-in [net.Socket] (http://nodejs.org/docs/latest/api/net.html#net.Socket)? –

+0

Actualicé a la última versión del nodo y parece que el material neto no tiene el método '.connect' por lo que no puedo usarlos. No sé por qué. – Masiar

Respuesta

14

Puede utilizar la acumulación en el zócalo en Node.js a hacer algo así (muy fácil tanto en Java y Node.js, pero usted consigue el punto):

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

Y el enlace al documento Node.js sobre zócalos : http://nodejs.org/docs/latest/api/net.html

+0

¡Gracias por la respuesta! Tengo otro problema: cuando lo hago 'net.connect (...)' el compilador del nodo se queja diciendo que 'Objeto # no tiene el método 'connect'', ¿sabes lo que está pasando? – Masiar