如何在客户端和服务器之间发送 Haxe 中的对象列表?

How to send a list of objects in Haxe between client and server?

我正在尝试用 Haxe (OpenFL) 编写在线留言板。网上有很多 server/client 示例。但是我是这个领域的新手,我不了解其中的任何一个。在服务器和客户端之间发送对象列表的最简单方法是什么?你们能举个例子吗?

编辑:我仍然不确定用户的问题是否真的是关于发送 "a list of objects";参见 问题...


最简单的方法是使用 Haxe Serialization, either with Haxe Remoting 或在 TCP/UDP 之上使用您自己的协议。协议的选择取决于您是否已经构建了一些东西,以及您将调用函数还是只是 getting/posting 数据。

无论哪种情况,haxe.Serializer/Unserializer 都会为您提供一种格式,可以用最少的代码将大部分(如果不是全部)Haxe 对象从客户端传输到服务器。

请参阅以下有关如何使用序列化 API 的最小示例(来自手册)。 format 是基于字符串并指定的。

import haxe.Serializer;
import haxe.Unserializer;

class Main {
  static function main() {
    var serializer = new Serializer();
    serializer.serialize("foo");
    serializer.serialize(12);
    var s = serializer.toString();
    trace(s); // y3:fooi12

    var unserializer = new Unserializer(s);
    trace(unserializer.unserialize()); // foo
    trace(unserializer.unserialize()); // 12
  }
}

最后,您还可以使用其他序列化格式,例如 JSON(使用 haxe.Json.stringify/parse)或 XML,但如果您处理枚举,它们就不会那么方便, class 这些格式不完全支持的实例或其他数据。

你可以使用 JSON

您可以将其放入您的 openFL 项目(客户端):

var myData = [1,2,3,4,5];

var http = new haxe.Http("server.php");
http.addParameter("myData", haxe.Json.stringify(myData));
http.onData = function(resultData) {
    trace('the data is send to server, this is the response:' + resultData);
}
http.request(true);

如果您有一个 server.php 文件,您可以像这样访问数据:
$myData = json_decode($_POST["myData"]);

如果服务器returns Json数据需要在客户端读取,那么在Haxe中需要做haxe.Json.parse(resultData);