簡體   English   中英

Node.js 和 Java 之間的 IPC 通信

[英]IPC Communication between Node.js and Java

我希望通過 IPC 在 Node.js 和 Java 子進程之間進行通信。 我正在尋找不需要打開端口的建議。

const { spawn } = require('child_process')

// Java App is within args
const args = []

const javaProcess = spawn('java', args, { cwd: __dirname })

javaProcess.on('message', (m) => {
  console.log('PARENT got message:', m)
})

// Sends { 'hello': 'world' } to the Java process
javaProcess.send({ hello: 'world' })

我知道 Node 層可以將消息發送到子進程,我只是不知道如何在 Java 層中偵聽消息並發送回消息。

非常感謝任何幫助,謝謝!

我最終從Erwin Bolwidt 的 Comment中得到靈感解決了這個問題。

const { spawn } = require('child_process')

// Java App is within args
const args = []

const javaProcess = spawn('java', args, { cwd: __dirname })

javaProcess.stdout.on('data', (m) => {
  console.log('PARENT got message:', m)
})

// Sends message to the Java process
javaProcess.stdin.write('Hello there java!');

java 進程可以在System.in上等待帶有Scanner的消息,然后將輸出打印到System.out

總之,您只是重新路由進程的標准輸入/標准輸出。 https://nodejs.org/api/child_process.html#subprocessstdout

我通過使用命名管道解決了這個問題......

在節點上,我使用了 Net API https://nodejs.org/api/net.html#net_ipc_support

在 Java 上,我使用了 RandomAccessFile https://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM