Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZendAMF-这是什么交通?_Php_Apache Flex_Flash Builder_Zend Amf - Fatal编程技术网

Php ZendAMF-这是什么交通?

Php ZendAMF-这是什么交通?,php,apache-flex,flash-builder,zend-amf,Php,Apache Flex,Flash Builder,Zend Amf,我正在使用ZendAMP php和Flex(Flash Builder 4)。它工作得很好,但我注意到,当我查看flex应用程序和ZendAMF之间的流量时,尽管我没有在代码中请求通信,但数据包仍在移动 例如,这就是我的服务在flex中的样子: var activityLogService:RemoteObject = new RemoteObject("zend"); activityLogService.showBusyCursor=true; activityLogService.endp

我正在使用ZendAMP php和Flex(Flash Builder 4)。它工作得很好,但我注意到,当我查看flex应用程序和ZendAMF之间的流量时,尽管我没有在代码中请求通信,但数据包仍在移动

例如,这就是我的服务在flex中的样子:

var activityLogService:RemoteObject = new RemoteObject("zend");
activityLogService.showBusyCursor=true;
activityLogService.endpoint="http://myserver:80/amf/";
activityLogService.source="ActivityLogService";
然后在设置addlistener后调用activityLogService.getRecord(myPassedParams)之类的函数

当我使用诸如fiddler之类的工具查看网络流量时,我可以看到我的请求和响应返回

但是,我也看到这些请求包不包含我的zend服务对象的名称:

�����null�/1����
���
�Mflex.messaging.messages.CommandMessageoperationcorrelationIdmessageIdtimeToLivetimestampdestinationheaders    bodyclientIdI3961D727-35B9-F41C-713A-AA42625FCFD9��

%DSMessagingVersion DSIdnil
回复也相当模糊:

�����
/1/onResult������
�Uflex.messaging.messages.AcknowledgeMessagecorrelationIdclientIddestinationmessageIdtimestamptimeToLiveheaders bodyI3961D727-35B9-F41C-713A-AA42625FCFD9I53D9441D-E1DC-4829-9B3F-000040DA9368I1322EAF2-B588-9929-0AC4-000013A22D80131282149600�
这些只是某种“保持活力”的信息吗

如果是,有没有办法关闭它们


此外,如果是这样的话,是否有一种方法可以使用它们在服务器端保持某种会话的活动状态(也许这就是它们的用途)?

RemoteObject AMF实现要求服务器端实现是有状态的。这被定义为协议的一部分,所以您选择哪个后端并不重要;re talking(即,我在BlazeDS、LCD和WebOrb方面的经验,但在PHP方面应该是一样的)

当应用程序对RemoteObject进行第一次AMF调用时,它会检查客户端是否设置了
DSid
值。这本质上是一个唯一的ID,用于向服务器标识flex客户端

如果没有,则发出一个调用以获取新的
DSid
,所有出站调用都将挂起,直到该调用返回。从那时起,
DSid
将传递给AMF数据包头中的所有出站呼叫

如果在客户端上重置DSid(通过调用
FlexClient.getInstance().id='nil'
),此过程将重复。(即,在服务器向客户端发出新的
DSid
之前,所有呼叫将再次暂停。)


基本上,这些是AMF协议工作所需的内部消息。RemoteObject AMF实现要求服务器端实现是有状态的。这被定义为协议的一部分,所以您选择哪个后端并不重要;re talking(即,我在BlazeDS、LCD和WebOrb方面的经验,但在PHP方面应该是一样的)

当应用程序对RemoteObject进行第一次AMF调用时,它会检查客户端是否设置了
DSid
值。这本质上是一个唯一的ID,用于向服务器标识flex客户端

如果没有,则发出一个调用以获取新的
DSid
,所有出站调用都将挂起,直到该调用返回。从那时起,
DSid
将传递给AMF数据包头中的所有出站呼叫

如果在客户端上重置DSid(通过调用
FlexClient.getInstance().id='nil'
),此过程将重复。(即,在服务器向客户端发出新的
DSid
之前,所有呼叫将再次暂停。)


基本上,这些是AMF协议工作所需的内部消息

您如何查看请求?您确定所有请求都来自您的Flex应用程序并以您的服务器为目标吗?例如,如果我有serviceCapture和tweetdeck,我会看到与我运行的任何Flex应用程序完全无关的大量流量。我知道它来自应用程序,因为在fiddler中它显示http url,路径是/amf/,就像我发送的普通请求一样。我也注意到,在我发送请求之前,它似乎发送了几个这样的数据包。再一次,这几乎就像是一次交谈或握手。这对我来说是不寻常的;但我不知道到底发生了什么。我在自己的开发中没有遇到过这种情况。你确定没有轮询设置或其他东西吗?它看起来可能是一个轮询组件。你是如何监视请求的?您确定所有请求都来自您的Flex应用程序并以您的服务器为目标吗?例如,如果我有serviceCapture和tweetdeck,我会看到与我运行的任何Flex应用程序完全无关的大量流量。我知道它来自应用程序,因为在fiddler中它显示http url,路径是/amf/,就像我发送的普通请求一样。我也注意到,在我发送请求之前,它似乎发送了几个这样的数据包。再一次,这几乎就像是一次交谈或握手。这对我来说是不寻常的;但我不知道到底发生了什么。我在自己的开发中没有遇到过这种情况。你确定没有轮询设置或其他什么吗?它看起来可能是一个轮询组件。我正在重新访问它,因为似乎每个请求都有两个调用!我每次都看到这个小小的请求,DSId为nill。在下一个(实际)请求中,它仍然显示DSId nill,但其中还包含“DSEndpoint zend”。它工作得很好,但速度慢了很多。我敢肯定我没有将getInstance设置为nil,那么是否有其他方法可以清除dsid,或者我需要做些什么来确保它被设置并保存?我正在重新访问它,因为似乎每个请求都有两个调用!我每次都看到这个小小的请求,DSId为nill。在下一个(实际)请求中,它仍然显示DSId nill,但其中还包含“DSEndpoint zend”。它工作得很好,但速度慢了很多。我肯定我没有将getInstance设置为nil,那么是否有其他方法可以清除dsid,或者我需要做些什么来确保它被设置并保存?