Java中的多人游戏。什么是最好的解决方案?

时间:2011-06-19 19:07:15

标签: java

我正在使用RMI和集中式服务器在java中编写多人/多房间游戏(Hearts)。 但是有一个问题:RMI Callbacks不会起作用,因为客户端是Natted和Firewalled。我基本上需要服务器将数据更新推送到客户端,可能不使用轮询和不使用套接字(我会在更高级别编码) 在您看来,实现这种架构的最佳解决方案是什么? ajax应用程序是唯一的解决方案吗?

4 个答案:

答案 0 :(得分:3)

你说你不想要轮询,但AJAX就是这样。您可以查看Comet,但无论如何都很难逃脱轮询(例如Comet本身使用下面的轮询)。

答案 1 :(得分:1)

您可以使用对等框架,例如JXTA。

答案 2 :(得分:0)

我可以提出两种主要技巧。

  1. 服务器有一个方法getUpdates,可由客户端调用。当有要显示的更新时,该方法将控件返回给客户端。

  2. 当客户端执行注册时,它们会为服务器提供回调远程对象 由于此对象未在任何rmi注册表中注册,因此对于natted客户端不应存在任何问题。

答案 3 :(得分:0)

我不确定(如果)ajax如何适用于非基于浏览器的应用程序。您可以使用每个连接的线程在应用程序期间维护您自己的SocketConnections池。

如果您需要扩展到大量并发连接,请查看非阻塞I / O框架,例如Apache MinaNetty(相关SO帖子:Netty vs Apache MINA)。< / p>