继我用RMI服务器回调为多用户/网络回合制游戏创建的设计/架构之后,我尝试创建一个分布式动画,其中我的模型(Ball)是远程对象,它通过服务器的回调机制更新客户端。轮询机制如何通过RMI实现?
的代码现在的情况是:
模型远程对象,这是迭代客户端列表和调用它们的更新方法,
public class BallImpl extends UnicastRemoteObject implements Ball,Runnable {
private List<ICallback> clients = new ArrayList<ICallback>();
protected static ServerServices chatServer;
static ServerServices si;
BallImpl() throws RemoteException {
super();
}
....
public synchronized void move() throws RemoteException {
loc.translate((int) changeInX, (int) changeInY);
}
public void start() throws RemoteException {
if (gameThread.isAlive()==false)
if (run==false){
gameThread.start();
}
}
/** Start the ball bouncing. */
// Run the game logic in its own thread.
public void run() {
while (true) {
run=true;
// Execute one game step
try {
updateClients();
} catch (RemoteException e) {
e.printStackTrace();
}
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
}
}
}
public void updateClients() throws RemoteException {
si = new ServerServicesImpl();
List<ICallback> j = si.getClientNames();
System.out.println("in messimpl " + j.size());
if (j != null) {
System.out.println("in ballimpl" + j.size());
for (ICallback aClient : j) {
aClient.updateClients(this);
}
} else
System.err.println("Clientlist is empty");
}
}
客户端被执行回调接口并具有更新方法实现:
public final class thenewBallWhatIwant implements Runnable, ICallback {
.....
@Override
public void updateClients(final Ball ball) throws RemoteException {
try {
ball.move();
try {
Thread.sleep(50);
} catch (Exception e) {
System.exit(0);
}
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
.....
}
我一般的看法是,I M实施推进机构与RMI在那种情况下我需要实现轮询)
如果是这样我怎么能实现与RMI轮询机制的情况下?
感谢您的任何反馈意见。
jibbylala
谢谢,我粘贴代码更好地了解我在做什么,如果我错误的地方使用正确的术语,然后请原谅。 – 2010-10-02 16:40:47
这里发生了太多的事情。简化 - 你能做我建议的简单事情吗?没有UI,没有线程 - 只需创建一个服务器,创建一个客户端并建立连接。从服务器的接口开始,因为它表示客户端想要从服务器取回什么以及服务器需要传递什么。我不会读你的代码。我已经给你一张很好的照片。现在取决于你。 – duffymo 2010-10-02 17:29:07
谢谢,但我认为你谈论实现与RMI的客户端和服务器通信,我认为即时通讯超越该阶段,因为我已经提到我有这种设计是基于回调,它也是成功的回合制游戏,但我现在有问题在这种情况下动画时,多个客户端执行相同的方法,这是重复移动,我希望当该移动方法已被一个客户端调用时,则不需要其他客户端调用导致球的方法移动得越来越快。 – 2010-10-02 17:54:36