0

我有一个从 COM 端口收集实时传感器数据的 java 程序,我想在不使用 node.js 的情况下将其发送到 javascript。

传感器数据应每秒至少发送 2 次。

我很难使用数据库进行通信,但这可能会减慢解决方案的速度。如果需要,可以将浏览器支持限制为 google chrome。(osx,win,linux)

你理想的解决方案是什么?

编辑: - java 软件应该在与基于 web 的 javascript 客户端相同的平台上运行。

本质上,正在发送的数据是 GPS,.. 显示在地图上的数据。

4

3 回答 3

2

LiveConnect正是您所寻找的。它允许您定义从 JS 到 Java 的通信方法,反之亦然。它是 JDK 中的内置技术。

于 2012-12-12T17:02:30.437 回答
1

有多种方法可以做到这一点。

- 一个用于闪存到 JavaScript 桥以通过套接字进行通信的 java。这是最兼容的方式,因为大多数浏览器都支持 Flash。有一些开源 AS3 桥接器,但是您需要套接字。

-Java 小程序并从小程序调用 JavaScript 代码。如果您有权读取 com 端口是最简单的方法,否则您可能不得不与小程序认证作斗争。Java 运行时必须安装在您的机器上。

- 如果您使用 Firefox 8.0+ 或最新版本的 google chrome 与您的 java 应用程序通过 websockets 通信,则为 websocket。是最现代的方法。它不适用于 IE,但您不需要任何其他应用程序作为 javascript 和 java 之间的桥梁,您可能需要努力寻找 java 套接字服务器示例、创建自己的实现或使用支持 WS 的 Web 容器/应用程序服务器:// 或 WSS://

于 2012-12-12T17:18:53.413 回答
1
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

//JAVA


public class Main {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        if (!(engine instanceof Invocable)) {
            System.out.println("Invoking methods is not supported.");
            return;
        }
        Invocable inv = (Invocable) engine;
        String scriptPath = "/Users/sheikhhussain/IdeaProjects/JavaHome/src/calculator.js";

        engine.eval("load('" + scriptPath + "')");

        Object calculator = engine.get("calculator");

        int x = 3;
        int y = 4;

        Object addResult = inv.invokeMethod(calculator, "add", x, y);
        Object subResult = inv.invokeMethod(calculator, "subtract", x, y);
        Object mulResult = inv.invokeMethod(calculator, "multiply", x, y);
        Object divResult = inv.invokeMethod(calculator, "divide", x, y);

        System.out.println(addResult.toString());
        System.out.println(subResult);
        System.out.println(mulResult);
        System.out.println(divResult);
    }
}



        // JAVASCRIPT

        var calculator = new Object();
        calculator.add = function (n1, n2) "jjj";
        calculator.subtract = function (n1, n2) n1 - n2;
        calculator.multiply = function (n1, n2) n1 * n2;
        calculator.divide = function (n1, n2) n1 / n2;
于 2019-02-20T07:13:08.400 回答