使用XMLSocket时延迟响应

时间:2013-04-09 13:40:50

标签: actionscript-3 flash flex sockets flash-builder

我正在尝试将Flash AS3文件与基于C#的套接字服务器进行交互。服务器设计为在给定时间给出两个响应,第一个和第二个响应之间可能存在不同的延迟。然而,我发现第二个响应与下一个响应一起到达。

var xmlsock:XMLSocket = new XMLSocket();
xmlsock.connect("127.0.0.1", 9231);

xmlsock.addEventListener(DataEvent.DATA, onDataHandler);

function onDataHandler(event:DataEvent):void {
    trace("[" + event.type + "] " + event.data);
}

当我使用跟踪检查输出时,我在下面找到了我用虚线分隔每个响应。响应测试和test2应该是针对单个请求进行的,但它们有两种不同的响应。

当前结果

[data] 
[data] test
--------------------------------------------------
[data] test2
[data] test
--------------------------------------------------
[data] test2
[data] test
--------------------------------------------------
[data] test2
[data] test
--------------------------------------------------

以下是我期待的结果     预期结果

[data] test
[data] test2
--------------------------------------------------
[data] test
[data] test2
--------------------------------------------------
[data] test
[data] test2
--------------------------------------------------

了解XMLSocket和解决问题的任何见解都会很棒。

1 个答案:

答案 0 :(得分:0)

我使用Socket类来实现这个功能。谢谢大家的帮助...

var socket:Socket = new Socket("localhost", 2553);

socket.addEventListener(Event.CONNECT, socketConnectHandler, false, 0, true);
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler, false, 0, true);

function socketConnectHandler(event:Event):void{
    trace("Connection has been established ");
}

function socketDataHandler(event:ProgressEvent):void{   

    var stream:ByteArray = new ByteArray();
    socket.writeBytes(stream, 0, 0);

    var data:String = "";

    while(socket.bytesAvailable){
        data += socket.readUTFBytes(1);
    }   

    trace("data "+ data);   
}