与GWT或GXT的多浏览器窗口通信

与GWT或GXT的多浏览器窗口通信,gwt,gxt,jsni,Gwt,Gxt,Jsni,我正在构建一个系统,该系统将在企业环境中用作用户的主要工作环境。我们希望能够为某些功能打开第二个浏览器窗口,并让这两个窗口通信(例如,在一个窗口上浏览映射界面,选择一个对象并在另一个窗口的编辑器中打开它)。 我有两个选择,我可以想出: 1) 尝试实现一些JSNI方法来获取窗口句柄并以这种方式进行通信 2) 实现一个长轮询服务器,通过cookie通过共享会话传递事件 关于如何实现方案1,是否有任何示例或建议?我在用GWT和GXT 或者,您对如何实现多浏览器通信还有其他建议吗?请看一看。我认为这应该

我正在构建一个系统,该系统将在企业环境中用作用户的主要工作环境。我们希望能够为某些功能打开第二个浏览器窗口,并让这两个窗口通信(例如,在一个窗口上浏览映射界面,选择一个对象并在另一个窗口的编辑器中打开它)。 我有两个选择,我可以想出:

1) 尝试实现一些JSNI方法来获取窗口句柄并以这种方式进行通信

2) 实现一个长轮询服务器,通过cookie通过共享会话传递事件

关于如何实现方案1,是否有任何示例或建议?我在用GWT和GXT


或者,您对如何实现多浏览器通信还有其他建议吗?

请看一看。我认为这应该是您的解决方案

我通过JMS服务器使用WebSocket进行浏览器到浏览器的通信来进行广播。设置中继服务器相对简单

如果您可以将有效负载编码为URL并加载到另一个窗口的位置,那么位置可能是解决方案

回复:空GwtEvent

从:

所有GWT事件都被视为已死亡,不应再访问 一旦最初触发事件的HandlerManager以 信息技术也就是说,不要保留处理程序之外的事件对象 方法


在进一步转发之前,您可能应该按照javascript覆盖类型将GwtEvent复制到JavaScriptObject中。

谢谢您的建议。我们计划重新审视我们的导航机制、活动和场所,这看起来是一种非常整洁的做事方式。目前,我们通过针对EventBus触发的事件进行导航,导航类会相应地侦听和指导导航

我已经通过JSNI进行了沟通。然而,我有一个恼人的问题。新窗口将调用:

public native void fireCrossBrowserEvent(GwtEvent<?> event) /*-{
    $wnd.opener.fireCrossBrowserEvent(event);
}-*/;
这要求:

public static void fireEvent(GwtEvent<?> event) {
    System.out.println("fireEvent: " + event);
    bus.fireEvent(event);
}
publicstaticvoidfirevent(GwtEvent事件){
System.out.println(“fireEvent:+事件”);
总线火灾事件(事件);
}
我最终使用GoogleAutoBean来同步和取消同步通过JSNI发送的事件。一切都很好。另外,为了与子窗口通信,我必须创建一个新的本机方法来替换GWT的window.open方法,以便它返回对新窗口的引用。javascript函数返回对新窗口的引用,但出于某种原因,GWT的包装器返回void

public static void fireEvent(GwtEvent<?> event) {
    System.out.println("fireEvent: " + event);
    bus.fireEvent(event);
}