Отправка данных из node.js в Java с использованием сокетов - PullRequest
7 голосов
/ 07 декабря 2011

Я пытаюсь отправить данные из node.js в Java через сокеты. Я искал вокруг, но ничего не было действительно полезно. Я привык к socket.io, но в этом случае он не очень подходит для этого. Кажется, что все расширения сокетов для node.js на самом деле не подходят для отправки сообщений, а скорее для прослушивания сообщений и ответа на что-либо.

Мое Java-приложение должно получать некоторую работу из node.js, выполнять ее и отправлять некоторый результат обратно в node.js. И нет, работа над node.js не может быть выполнена, она должна выполняться Java (на самом деле это Scala, но неважно).

Кто-нибудь из вас знает, как я могу сделать что-то подобное?

Спасибо

1 Ответ

15 голосов
/ 07 декабря 2011

Вы можете использовать встроенный сокет в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...