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

时间:2016-02-01 15:46:09

标签: client-server haxe openfl

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

2 个答案:

答案 0 :(得分:1)

您可以使用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"]);

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

答案 1 :(得分:0)

编辑:我还不确定用户的问题是否真的是要发送“对象列表”;请参阅comment问题......

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

在任何一种情况下,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,但如果您处理枚举,类实例或其他未完全支持的数据,它们就不会那么方便这些格式。