Spring实现Ice回调实例
原理
当客户端除了主动调用服务端方法之外,还需要被动获取服务端的数据时,就需要通过回调机制实现。
回调机制下,客户端接收服务端数据的频率完全由服务端的回调频率决定。
这种情况下,如果使用客户端主动调用服务端方法获取数据的方式,会存在服务端上报数据频率与客户端接收数据频率不一致的情况。
但如果服务端上报数据的频率可以同步客户端调用方法获取数据的频率(客户端调用一次服务端方法,服务端上报一次数据),那可以不使用回调机制。
初始化
引入gradle依赖
新建包ice
包ice下目录
/client
/clientServant
/server
/serverServant
/slice
/slice2java
slice下Callback.ice
1 | #pragma once |
slice2java生成通用类到slice2java下
clientServant下ClientHandler实现
1 | public class ClientHandler implements CallbackReceiver { |
serverServant下ServerHandler实现
1 | public class ServerHandler implements CallbackSender { |
server下Server实现
1 | public class Server { |
client下Client实现
1 | public class Client { |
src/main/resources/config.server
1 | # |
src/main/resources/config.client
1 | # |
Run
先运行服务端
再运行客户端
客户端回调函数打印:received callback