我是 Flash 新手。我打算在 Flash 中创建一个游戏客户端(在浏览器中运行),它需要与用 Java 编写的服务器通信。客户端和服务器之间的连接需要是持久的。
我知道 XMLSocket - 这是唯一的方法吗?有什么建议吗?
谢谢!
我是 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 通信。与 XMLSocket 相比,Socket 的优势之一是带宽,因为您可以编写二进制数据。例如,您可以将单个实体的位置发送为:
writeShort(entity.id); writeFloat(entity.x); writeFloat(entity.y);
这只有 10 个字节。
Java 通过 DataStreams 或 ByteBuffers 支持类似的原始读/写函数。
实际上,服务器端比 Flash 端更复杂,因为您必须在旧的 io Java 套接字和新的 io 方法之间进行选择。新的 io 方法具有更好的性能,但更复杂并且显然充满了陷阱。