Flash客户端和Java服务器之间的持久连接

我是Flash的新手。 我打算在Flash中创建一个游戏客户端(在浏览器中运行),需要与用Java编写的服务器通信。 客户端和服务器之间的连接需要持久化。

我知道XMLSocket – 这是唯一的方法吗? 有什么建议?

谢谢!

有一个Socket类,它允许您在与服务器通信时使用真正的TCP。 缺点 – 您必须自己实施协议(在大多数情况下都在实施HTTP客户端。也许有人已经这样做了)

你是否只是为了倾斜和乐趣而创造游戏? 否则我会建议使用现有的游戏服务器,或者至少调查该选项的优缺点。

我在几个项目中使用过SmartfoxServer( http://www.smartfoxserver.com ),但这并不完美,但是你需要解决很多问题(如果你愿意,你可以在java中编写扩展)。 我认为ElectroServer http://www.electro-server.com/是类似的,你也可以看一下开源服务器Red5 http://osflash.org/red5

除了在xml中发送内容之外,您还可以调查是否可以使用AMF发送数据,它可能更小(如更少的位)。

确保服务器上有可用的安全策略文件。 请查看此SO 问题/答案以获取更多信息。

我一直在尝试Flash和Java之间的Socket通信。 Socket over XMLSocket的一个优点是带宽,因为您可以编写二进制数据。 例如,您可以将单个实体的位置发送为:

writeShort(entity.id); writeFloat(entity.x); writeFloat(entity.y); 

这只是10个字节。

Java支持与DataStreams或ByteBuffers类似的原始读/写函数。

实际上,服务器方面比Flash方面更复杂,因为你必须在旧的io Java套接字和新的io方法之间进行选择。 新的io方法具有更好的性能,但更复杂,显然充满了陷阱。