Gwt 事件总线可以用于不同项目或应用程序之间的通信吗

Gwt 事件总线可以用于不同项目或应用程序之间的通信吗,gwt,event-bus,Gwt,Event Bus,我正在为我们的内部使用创建一个gwt小部件库。每当gwt小部件中的任何控件发生任何事件时,我都会被要求触发一个事件,然后使用我的小部件的应用程序或项目会监听该事件。这个概念似乎类似于我之前用于其他gwt项目的事件总线,用于在同一页面上不同区域显示的不同视图之间进行通信。这很好,因为我在整个应用程序中使用了相同的事件总线实例。但是现在我将在我的项目中使用事件总线的特定实例,但是使用它的应用程序将不会使用相同的实例。我是否继续使用它,或者是否有其他方法在不同的应用程序之间触发事件。请帮助营救兔子。。

我正在为我们的内部使用创建一个gwt小部件库。每当gwt小部件中的任何控件发生任何事件时,我都会被要求触发一个事件,然后使用我的小部件的应用程序或项目会监听该事件。这个概念似乎类似于我之前用于其他gwt项目的事件总线,用于在同一页面上不同区域显示的不同视图之间进行通信。这很好,因为我在整个应用程序中使用了相同的事件总线实例。但是现在我将在我的项目中使用事件总线的特定实例,但是使用它的应用程序将不会使用相同的实例。我是否继续使用它,或者是否有其他方法在不同的应用程序之间触发事件。请帮助营救兔子。。。这是这类问题的标准解决方案

它是作为软件总线创建的,就像硬件总线连接到计算机系统一样

我特别喜欢这本书。它详细介绍了该方法,概述了源代码及其背后的体系结构。非常实用。

首先,您称之为“不同的应用程序”是什么?它们是否在同一个浏览器中运行?它们是否部署在同一台服务器上

如果应用程序不共享公共的
EventBus
,则不能使用
EventBus
在应用程序之间进行通信

如果应用程序在同一选项卡中运行,则可以将
EventBus
存储在静态变量中,并从同一选项卡中的其他应用程序检索它

如果应用程序在同一浏览器(不同选项卡上)中运行,则可以使用
LocalStorage
进行通信。你可以看看:

GWT在
com.google.GWT.storage.client.storage
中提供了
LocalStorage
(和
SessionStorage
)的实现

如果它们不在同一浏览器中运行,则必须往返服务器以从一个应用程序到另一个应用程序进行通信(使用RPC发送消息,使用RPC轮询检查新消息,或使用服务器推送技术,请参阅和)


如果它们没有部署在同一台服务器上,您将不得不往返到服务器,并在服务器之间进行通信(使用套接字、RPC、Web服务等)。

不幸的是,RabbitMQ在GWT中不起作用(GWT代码实际上是在JS中编译并在浏览器上运行的,因此只有一部分Java类和功能可用)。