Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的多人游戏。什么';什么是最好的解决方案?_Java - Fatal编程技术网

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

Java中的多人游戏。什么';什么是最好的解决方案?,java,Java,我正在用java编写一个多人/多房间游戏(Hearts),使用RMI和一个集中式服务器。 但有一个问题:RMI回调将不起作用,因为客户端是NATT和防火墙。我基本上需要服务器将数据更新推送到客户机,可能不需要使用轮询和套接字(我会在更高级别编写代码) 在您看来,实现这种体系结构的最佳解决方案是什么?ajax应用程序是唯一的解决方案吗?你说你不想要轮询,但ajax正是这样。您可以查看,但无论如何都很难逃避轮询(例如Comet本身在下面使用轮询)。您说您不想要轮询,但AJAX正是如此。您可以查看,但

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

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

您说您不想要轮询,但AJAX正是如此。您可以查看,但无论如何都很难逃避轮询(例如Comet本身在下面使用轮询)。

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

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

我可以推荐两种主要技术

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

  • 当客户端执行注册时,它们会给服务器一个回调远程对象 由于此对象未在任何rmi注册表中注册,因此natted客户端应该没有任何问题


  • 我可以推荐两种主要的技术

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

  • 当客户端执行注册时,它们会给服务器一个回调远程对象 由于此对象未在任何rmi注册表中注册,因此natted客户端应该没有任何问题

  • 我不确定ajax对于非基于浏览器的应用程序是如何工作的。您只需在应用程序期间保持自己的SocketConnections池处于打开状态,每个连接有一个线程

    如果您需要扩展到大量并发连接,请使用非阻塞I/O框架,如or(相关SO post:)。

    我不确定ajax如何适用于非基于浏览器的应用程序。您只需在应用程序期间保持自己的SocketConnections池处于打开状态,每个连接有一个线程


    如果您需要扩展到大量并发连接,请使用非阻塞I/O框架,如or(相关SO post:)。

    谢谢!我来看看!PS:在我的问题中,我想问是否有一种技术可以替代AJAX来避免轮询。也许我被误解了Comet为什么在下面使用轮询?我以为它只是打开了一个连接,然后用它来发送数据-轮询从哪里来?@Voo,浏览器可能会在连接时超时。@Thorbjørn啊,好的,在这种情况下,你必须检测到并打开一个新的连接,当然。就我个人而言,当我在这种情况下想到“轮询”时,我理解在常规时间步中的请求,但我认为这也属于轮询范围。@Voo,问题是服务器需要随意向客户端发送信息,但客户端必须启动连接。谢谢!我来看看!PS:在我的问题中,我想问是否有一种技术可以替代AJAX来避免轮询。也许我被误解了Comet为什么在下面使用轮询?我以为它只是打开了一个连接,然后用它来发送数据-轮询从哪里来?@Voo,浏览器可能会在连接时超时。@Thorbjørn啊,好的,在这种情况下,你必须检测到并打开一个新的连接,当然。就我个人而言,当我在这种情况下想到“轮询”时,我理解在常规时间步中的请求,但我认为这也属于轮询范围。@Voo,问题是服务器需要随意向客户端发送信息,但客户端必须启动连接。这是桌面应用程序还是web应用程序?这是桌面应用程序还是web应用程序?