java脚本到java远程方法接口

javascript to java remote method interface

背景:

前段时间我开发了一个 Java 服务器-客户端应用程序(范围是构建自动化)。第一次尝试后,我们在 java 中编写服务器和客户端并通过 java RMI(远程方法接口)连接它们,我们发现在 Javascript 中编写客户端会有几个原因会更好(我不会在这里给他们,没关系)。

由于 RMI 在 Javascript 和 Java 之间不起作用,因此我们使用 WebSockets 连接它们并获得近乎实时的连接。这是大约 3 年前的事了,websockets 仍处于早期测试阶段,完全没有文档和许多 "not yet implemented" 功能。对于 protocool 部分,我写了一些类似自己的基于 JSON 的 RMI。我反序列化了来自客户端的 JSON 对象,并使用 java.lang.reflection 查询我自己的服务器应用程序以获取客户端想要执行的方法。

一切都很好,我有它相当通用,所以我可以在运行时动态插入其他子类,我的 RMI 仍然能够访问它们。

TL;DR:

我一直想知道是否有一种标准方法可以将 java 连接到 java 脚本,例如 RMI(例如必须扩展一些接口,然后能够访问这些接口方法javascript) 我不是第一个遇到这个问题的人。

自言自语:我是一名电气工程师,所以 Java、Java脚本或一般的 Web 技术是我在大学里学不到的。当涉及到 java 时,我确实知道我在说什么,但我完全是 javascript 的菜鸟。

为了实现客户端和服务器之间的异步通信,有一些可用的框架,例如 Atmosphere, Spring Reactor, DWF, Spring websockets.

基本方法是这些框架有客户端 js 文件,它充当服务器端方法的存根。框架不允许请求响应周期从浏览器关闭。他们继续定期发送空白消息以保持连接打开并保持数据同步。

市场上还有一些专有的 API 可以实现这一点,例如 Pusher