Take a look at the Adobe documentation on XMLSocket, it may be possible to
just send
null terminated strings instead of well formed XML. I recall something like
that is possible.




On Thu, May 8, 2008 at 10:02 AM, Evaldas Taroza <[EMAIL PROTECTED]> wrote:

> Thanks for the code, it gave me initial idea on where to start. Still, the
> code is showing XMLSocket, so it assumes that I am receiving XML data. But
> As I mentioned previously, the incoming data (at least in the beginning) is
> not well formed XML and should be treated as a simple string...
>
> So I suppose there is some Flash API for that, isn't there?
>
> How does it work technically that OL can communicate to Flash using
> Javascript?
>
> Evaldas
>
> Henry Minsky wrote:
>
>> We do something similar with the remote debug protocol.
>>
>> if you look at the file  WEB-INF/lps/lfc/debugger/platform/swf/LzRemote.as
>> you will see the usage
>> of the Flash APIs. They can be accessed as normal Javascript for the most
>> part.
>>
>> For example the code to open and send a message looks like
>>
>> Debug.sockOpen = function (port) {
>>  var url = LzBrowser.getLoadURLAsLzURL();
>>  // Security requires us to talk back to the server we were loaded from
>>  var host = url.host;
>>  this.xsock = new XMLSocket();
>>  this.xsock.onClose = this.brokensocket;
>>  this.xsock.onXML = this.socketXMLAvailable;
>>  if (! this.xsock.connect(host, port)) {
>>    Debug.log("remote debugger could not connect to listener " + host + ":"
>> + port);
>>  }
>>  this.writeInitMessage();
>> }
>>
>>
>> /**
>>  * @access private
>>  */
>> Debug.writeInitMessage = function () {
>>    var filename = LzBrowser.getLoadURLAsLzURL();
>>    var myXML = new XML();
>>    var init = myXML.createElement("init");
>>    myXML.appendChild(init);
>>    init.attributes.filename         = filename;
>>    init.attributes.language         = "LZX";
>>    init.attributes.protocol_version = "1.0";
>>    init.attributes.build      = canvas.lpsbuild;
>>    init.attributes.lpsversion = canvas.lpsversion;
>>    init.attributes.lpsrelease = canvas.lpsrelease;
>>    init.attributes.runtime    = canvas.runtime;
>>    init.attributes.appid      = "0";
>>    this.xsock.send(myXML);
>> }
>>
>>
>> and the code to hook into the callback for received XML looks like
>>
>> Debug.socketXMLAvailable = function (doc) {
>>    var e = doc.firstChild;
>>    var rloader = Debug.rdbloader;
>>    if (e != null) {
>>        // clear warnings history
>>        Debug.resetWarningHistory();
>>        Debug.inEvalRequest = true;
>>        var seqnum = e.attributes['seq'];
>>        if (seqnum == null) {
>>            seqnum = Debug.seqnum++;
>>        }
>>
>>        if (e.nodeName == "exec") {
>>            var expr = e.firstChild.nodeValue;
>>            rloader.request( { lz_load : false,
>>                           lzt : "eval",
>>                           proxied: true,
>>                           lzrdbseq : seqnum,
>>                           lz_script : "#file evalString\n#line 0\n" + expr
>> } );
>>              } else if (e.nodeName == "eval") {
>>            var expr = e.firstChild.nodeValue;
>>            rloader.request( {  lz_load : false,
>>                                lzt : "eval",
>>                                proxied: true,
>>                           &n bsp;    lzrdbseq : seqnum,
>>                                lz_script : "#file evalString\n#line 0\n" +
>> expr } );
>>        } else if (e.nodeName == "inspect") {
>>            Debug.inEvalRequest = false;
>>            var id = e.attributes.id <http://e.attributes.id>;
>>            Debug.sockWriteAsXML(Debug.ObjectForID(id), seqnum);
>>        } else {
>>            Debug.inEvalRequest = false;
>>            Debug.sockWrite("<response seq='"+seqnum+"'><error msg='unknown
>> remote debug command'>"+e.nodeName+"</error></response>");
>>        }
>>    } else {
>>        Debug.inEvalRequest = false;
>>        Debug.sockWrite("<response seq='-1'><error msg='null remote debug
>> command'/></response>");
>>    }
>> }
>>
>>
>>
>>
>> You may want to put some of that code into a <script when="immediate">
>> block
>>
>> On Thu, May 8, 2008 at 9:30 AM, Evaldas Taroza <[EMAIL PROTECTED]<mailto:
>> [EMAIL PROTECTED]>> wrote:
>>
>>    Hello,
>>
>>    Thanks Henry for the pointer. Indeed I need a TCP socket. Normal
>>    Dataset will not do the job, I think.
>>
>>    When you say to use Flash API, how do I do it? I mean, in Flash I
>>    suppose there is another programing language, like ActionScript, so
>>    how do I do it from within OL then?
>>
>>    And when you say that Flash API is not officially supported by OL
>>    can it be that my app will eventually break, when you change
>>    somethings inside OL?
>>
>>    A bit about my problems:
>>    As I told you I am taking my first steps with OL. So I decided to
>>    write some simple chat program, which would support a very small
>>    subset of XMPP. So as a start I need to send to the chat server the
>>    following text:
>>    <?xml version='1.0' encoding='UTF-8'?>
>>     <stream:stream
>>       to='localhost'
>>       xmlns='jabber:client'
>>       xmlns:stream='http://etherx.jabber.org/streams'
>>       version='1.0'>
>>
>>    And the server responds to something similar as well. As you can see
>>    it is not a well-formed XML document, so I need to treat it as text
>>    and parse it. All the subsequent communication happens with
>>    well-formed XML snippets.
>>
>>    Do you think it's possible?
>>
>>    Evaldas
>>
>>    Henry Minsky wrote:
>>
>>        For streaming I/O to a TCP socket, if you restrict your self to
>>        the Flash runtime, you can use the Flash XMLSocket API , which
>>        has some restrictions, such as it must use TCP ports above 1024
>>        I think.
>>
>>        The API can be found in the Flash reference manual, it is not
>>        officially a supported API in OpelLaszlo though.
>>
>>        We used this API for one of the remote debugger protocols at one
>>        point. There is still some code in the debugger implementation
>>        for it I think, which could be used as an example.
>>
>>
>>        On Thu, May 8, 2008 at 12:35 AM, Evaldas Taroza
>>        <[EMAIL PROTECTED]
>>        <mailto:[EMAIL PROTECTED]>
>>        <mailto:[EMAIL PROTECTED]
>>        <mailto:[EMAIL PROTECTED]>>> wrote:
>>
>>           Dear OL users,
>>
>>           I am pretty new to OL. What I am trying to achieve is to open a
>>           socket to a host (crossdomain) and read incoming textual data.
>>
>>           Incoming data will most likely be an XML document, but I
>>        don't want
>>           to read the whole document, I rather need to deal with it as it
>>           comes, in a streaming manner. How can I achieve this?
>>
>>           Thank you very much for help!
>>
>>           Evaldas
>>
>>           --    +41 79 616 53 76
>>           www.linkedin.com/in/taroza
>>        <http://www.linkedin.com/in/taroza>
>>        <http://www.linkedin.com/in/taroza>
>>
>>           Optaros - www.optaros.com <http://www.optaros.com>
>>        <http://www.optaros.com>
>>
>>
>>
>>
>>        --        Henry Minsky
>>        Software Architect
>>        [EMAIL PROTECTED]
>>        <mailto:[EMAIL PROTECTED]>
>>        <mailto:[EMAIL PROTECTED]
>>        <mailto:[EMAIL PROTECTED]>>
>>
>>
>>
>>
>>    --    +41 79 616 53 76
>>    www.linkedin.com/in/taroza <http://www.linkedin.com/in/taroza>
>>
>>    Optaros - www.optaros.com <http://www.optaros.com>
>>
>>
>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>>
>>
>
>
> --
> +41 79 616 53 76
> www.linkedin.com/in/taroza
>
> Optaros - www.optaros.com
>
>


-- 
Henry Minsky
Software Architect
[EMAIL PROTECTED]

Reply via email to