2012-12-19 165 views
3

我正在用Flex开发游戏。
这里有AIR和Web版本的游戏。 AIR应用程序将使用端口上的UDP套接字连接到服务器。 Web版本的目的是允许用户在工作时播放,或者在阻止某些端口的防火墙/代理之后的计算机上播放。因此,Web将使用端口80上的http连接来连接到服务器。侦听套接字udp和http连接的服务器代码

回答http连接的服务器代码将是使用BlazeDS的java servlet。 但是,如果你们中的任何一个人发现它更容易解释一个C#服务器代码(webservices或其他),那就没问题。 应答UDP请求的服务器代码将是一个监听套接字连接的简单类。

我的问题是我不知道如何把UDP和http代码放在一起。如果有5个AIR客户端和5个Web客户端,则他们都需要在服务器中使用一些常见的收集变量,以便我可以使用最新信息更新所有客户端。 谁将实例化侦听套接字的类?什么时候?

所以总结一下:
1.我需要一个专用服务器来实现我想要的吗?
2.谁将实例化udp处理类以及何时?
3.甚至可以将UDP连接的udp处理类和servlet保留在一起?如果没有http,我甚至不需要tomcat。但http和udp代码需要保持在一起,以便我可以更新播放器集合。是否有可能实例化UDP处理类并告诉它在servlet部署在服务器上时侦听套接字......或类似的东西?

任何建议都更受欢迎。
由于提前,
米哈

回答

1

HTTP和UDP代码要待在一起

不,他们没有。它们是您游戏数据的传输机制,因此它们应该是透明的。你的UDP和HTTP服务器应该连接到你的游戏后端,以什么方式取决于你。它可以在内存中,通过直接从后端代码使用HTTP和UDP(套接字)模块,或者它可以使用某种服务(所以你可以让其他通道与同一个后端对话)。

此游戏后端不直接连接到用户,但只与UDP和HTTP模块进行通信。

然后,从此后端处理您从HTTP和UDP收到的消息,并通过同一通道发送响应。

实施例:

  1. AIR-客户机1发送一个有效的登录消息给UDP服务器。
  2. UDP服务器将登录消息转发到游戏后端。
  3. 游戏后端将成功的结果消息返回给UDP服务器
  4. UDP服务器将结果消息转发给AIR-client 1。

例2:

  1. 现在HTTP客户端1,这恰好是已经登录,请所有用户当前登录它这样做是通过HTTP,HTTP服务器。
  2. HTTP服务器将此请求转发给游戏后端。
  3. 游戏后端将信息返回给HTTP服务器
  4. HTTP服务器向客户端返回响应。