java到javascript的实时通信

java到javascript的实时通信,java,javascript,communication,Java,Javascript,Communication,我有一个java程序,它从COM端口收集实时传感器数据,我想在不使用node.js的情况下将其发送到javascript 传感器数据应至少每秒环绕2次 我很难使用数据库进行通信,但这可能会减慢解决方案的速度。 如果需要,浏览器支持可以限制在google chrome上。(osx、win、linux) 你的理想解决方案是什么 编辑:-java软件应与基于Web的javascript客户端在同一平台上运行 基本上发送的数据是GPS,。。地图上显示的数据。就是您要查找的数据。它允许您定义从JS到Jav

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

传感器数据应至少每秒环绕2次

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

你的理想解决方案是什么

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


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

就是您要查找的数据。它允许您定义从JS到Java和viceversa的通信方法。它是JDK中的内置技术。

正是您所需要的。它允许您定义从JS到Java和viceversa的通信方法。它是JDK中的一种内置技术。

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

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

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


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

的web Container/app server。您可以通过多种方法来实现这一点

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;
-java-to-flash-to-JavaScript桥通过套接字进行通信。这是最兼容的方式,因为大多数浏览器都支持flash。有一些开源的AS3网桥,但是你需要套接字

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


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

的web Container/app server。您能使用套接字吗?一个套接字每秒可以处理200000条消息。只需编写一个web应用程序。java程序将在哪里运行,JavaScript程序将在哪里运行?两者都将在同一平台上运行;目前java和javascript是两种不同的应用程序。您可以使用套接字吗?一个套接字每秒可以处理200000条消息。只需编写一个web应用程序。java程序将在哪里运行,JavaScript程序将在哪里运行?两者都将在同一平台上运行;目前,java和javascript是两种不同的应用程序。这是否意味着我需要将java程序转换为小程序?基本上,您需要使用一个小程序类来处理JS的调用和JS的调用,并将您得到的内容传播到程序的其余部分。我以这种方式实现了一个录音机,使用JS启用和禁用它(我不想使用javaappletgui)以及所有其他基本操作。所有录制功能都在经典的Java类中,而小程序包含前端管理和交互的所有功能。这是否意味着我需要将Java程序转换为小程序?基本上,您将使用一个小程序类来处理与JS之间的调用,并将得到的内容传播到程序的其余部分。我以这种方式实现了一个录音机,使用JS启用和禁用它(我不想使用javaappletgui)以及所有其他基本操作。所有的录制功能都在经典的Java类中,而applet包含了前端管理和交互的所有功能?因为传输了大量传感器数据:使用小程序或套接字通信?这取决于您的需要。如果是某种监视器,我会创建一个flash/flex实时监视器,并通过套接字将其连接到从com读取的java应用程序。如果你想用最先进的代码技术来实现这一点,我会使用websocket并将其连接到你的com阅读器java应用程序。最简单的方法是创建一个java小程序,如果您可以从那里读取com,则在需要时调用javascript(您不需要这个套接字)。不要担心套接字效率。什么是更好的资源明智?因为传输了大量传感器数据:使用小程序或套接字通信?这取决于您的需要。如果是某种监视器,我会创建一个flash/flex实时监视器,并通过套接字将其连接到从com读取的java应用程序。如果你想用最先进的代码技术来实现这一点,我会使用websocket并将其连接到你的com阅读器java应用程序。最简单的方法是创建一个java小程序,如果您可以从那里读取com,则在需要时调用javascript(您不需要这个套接字)。不要担心套接字效率。
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;