实时通信java到javascript

时间:2012-12-12 16:59:07

标签: java javascript communication

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

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

我很难使用数据库进行通信,但这可能会减慢解决方案的速度。 如果需要,浏览器支持可以限制为谷歌浏览器。 (OSX,赢,Linux)的

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

- 一个Java applet,从applet调用JavaScript Code。如果你有权阅读com端口是最简单的方法,否则你可能不得不努力使用applet认证。必须在您的计算机上安装Java Runtime。

-A websocket如果您使用Firefox 8.0+或最近的谷歌浏览器版本来与您的Java应用程序通信websockets进行通信。是最现代化的方式。它不适用于IE,但你不需要任何其他应用程序作为javascript和java之间的桥梁,你可能需要努力找到一个java套接字服务器示例,创建自己的实现或使用支持WS的web包含器/ app服务器://或WSS://

答案 2 :(得分:0)

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;