GWT-(客户端-->;服务器-->;客户端)和(服务器-->;客户端)通信之间的差异

GWT-(客户端-->;服务器-->;客户端)和(服务器-->;客户端)通信之间的差异,gwt,Gwt,在我的MVP应用程序中,我使用GWT-RPC进行了大量(客户端-->服务器-->客户端)通信。结构很简单,下面是一个客户端调用的示例 testObject.callToServer(example, new AsyncCallback<Void>(){ @Override public void onFailure(Throwable caught) { //handle failure

在我的MVP应用程序中,我使用GWT-RPC进行了大量(客户端-->服务器-->客户端)通信。结构很简单,下面是一个客户端调用的示例

        testObject.callToServer(example, new AsyncCallback<Void>(){
            @Override
            public void onFailure(Throwable caught) {
                //handle failure
            }
            @Override
            public void onSuccess(Object result) 
                //handle success
            }
         });
testObject.callToServer(例如,new AsyncCallback(){
@凌驾
失败时的公共无效(可丢弃){
//处理失败
}
@凌驾
成功时公共无效(对象结果)
//成功
}
});
我的问题是,在没有来自客户端的初始调用的情况下,如何只实现服务器到客户端的通信?我仍然可以使用RPC吗?如果可以,我是否可以以某种方式重用上面的代码示例

更多信息,我正在使用WebSocket来维护客户端/服务器之间的开放通信链接。我想知道如何通过电线发送更多的信息。我认识到RPC和WebSocket是两种不同类型的通信,它们在单个通信实例中可能是互斥的

至于我想发送什么样的数据,现在只是简单的POJO


谢谢。

我通过GWT的Autobean框架实现了这一点。

所有与服务器通信的方法都是“线上字符串”—与RPC的区别在于,它是一个特殊格式的字符串,描述所发送对象的类型、结构和内容。在会话开始之前,服务器的.class文件中就已经预定义了这些结构,并为GWT代码编译成JS格式。您的应用程序中有一个共享的.gwt.rpc文件,该文件描述了每对rpc接口中可以使用的类型,这样双方都可以确保知道对方知道什么(具体地说,客户机在每个请求中命名该文件,如果可以找到该文件,服务器同意使用该文件,否则会抛出一个错误,即两者不同步)

将对象放入其他形式的传输(如WebSocket)中需要将对象序列化到该字符串中,另一方面读取它们。要正确使用RPC及其设计的限制,您必须启动预期的“握手”,但由于WebSocket从客户端启动,这应该很容易做到


在您的自我回答中,您提到您改为使用AutoBeans,这样您就可以在接口中简单地定义非常简单的类似bean的结构,并能够轻松地将它们映射到JSON字符串,然后再映射回来。我还在WebSockets plus RPC服务器上使用一个共享客户端impl完成了两个简单的实现:。此项目支持rt可以是JavaEE websockets,也可以是Webbit(一个使用Netty的websocket库)。它既不完整,也没有bug,但可以让您表现得像任何一方(服务器或客户端)可以自由调用其他方法,使用RPC-able对象调用方法,并提供一些用于启动/停止套接字的简单挂钩。

感谢您的详细回答,我将查看您的链接。