I just saw the server side file /scripts/commands/proxy.js (I should have look
at this 2 hours ago lol). Everything I described (APE Server being the
middleware between APE Client and the Socket Server) is coded there. I'll fix
the "disconnect" vs "close" thing there instead.
- Louis
P.S.: I forgot to add this to my previous email. IF:
- the user is connected to APE and a socketServer
- the page is refreshed
- the transport is loongpolling
It will take a few second for the client to disappear from the SocketServer the
same way it takes a couple of second for the client to disappear from the same
server.
Le 2013-10-07 à 21:14, Louis Charette <[email protected]> a écrit :
> I understand what's going on now.
>
> 1) First, I couldn't send anything to the Socket Server since I didn't add
> "/n" at the end of my strings. I guess APE should do it by himself…
>
> 2) When you use TCPSocket in the client (Browser), it's not the client that
> connect to the socket but the APE Server itself. That's why I couldn't use
> "localhost" as my TCPSocket server. APE was running in a VM and the
> SocketServer on my computer. Since it's not the browser that connect to the
> Socket Server, localhost didn't point to my computer, but the VM where APE
> was running. What the APE Client actually does when you create a new
> TCPSocket connection, it create a new pipe to the APE server and use this
> pipe to send and received data from APE Server to APE Client. The server
> himself manage the connection to the socket. So it's:
>
> APE Client --> APE Server --> SocketServer
>
> and not :
>
> APE Server <----- APE Client -----> Socket Server
>
> 3) That being said, if the APE Server is killed, you won't received any
> "Socket disconnect event" since APE the pipe running from the Client to the
> APE Server is shut at the same time. The Socket connection (Between APE
> Server and Socket Server) should also be shut when APE is killed, but I'm not
> sure, you may need to test that. In that case (APE Server killled), you
> should listen to the "apeDisconnect" event to tell the user the socket is now
> closed and use the "apeReconnect" event to start the socket connection again.
>
> 4) Next, if the Socket server is killed (or the Socket Server kick the
> client), APE Server will tell APE Client the connection has been cut (via the
> pipes). BUT, there's an error in the APE Client. The APE Client (in
> /Source/Pipe/PipeProxy.js) listen the the "Proxy_event" raw and ship the data
> to a function called "rawProxyEvent". This function will switch depending on
> which event the APE Server send him (read, connect, close). The thing is, the
> APE Server doesn't send a "close" event when the connection is shut, but a
> "disconnect" event. So, to make it work, you show edit the file like this:
>
> > Find:
>
>
>
> rawProxyEvent: function(resp){
> switch (resp.data.event) {
> case 'read':
> var data = B64.decode(resp.data.data);
> this.fireGlobalEvent('proxyRead', data)
> if (this.onread) this.onread(data);
> break;
> case 'connect':
> this.fireGlobalEvent('proxyConnect');
> if (this.onopen) this.onopen();
> break;
> case 'close':
> this.fireGlobalEvent('proxyClose');
> if (this.onclose) this.onclose();
> break;
> }
> },
>
> > Change to :
>
> rawProxyEvent: function(resp){
> switch (resp.data.event) {
> case 'read':
> var data = B64.decode(resp.data.data);
> this.fireGlobalEvent('proxyRead', data)
> if (this.onread) this.onread(data);
> break;
> case 'connect':
> this.fireGlobalEvent('proxyConnect');
> if (this.onopen) this.onopen();
> break;
> case 'close':
> case 'disconnect':
> this.fireGlobalEvent('proxyClose');
> if (this.onclose) this.onclose();
> break;
> }
> },
>
>
> (I'll make a fork of the Client files (APE_JSF) on GitHub and submit a
> pull request to fix this for future use.)
>
> 5) In the same way as #4, if the user's internet is cut, he will lose the
> connection from APE and the Socket at the same time as described in #4.
>
>
> 6) Finally, the documentation on the new website is wrong about sockets for
> the Client Javascript. See:
> http://ape-project.org/static/jsdocs/client/symbols/APE.PipeProxy.html#static_open.
> APE.PipeProxy doesn't actually exist in the Client (Again, APE mix everyone
> up with the Client vs. Core functions). If you type "Ape.PipeProxy" in the
> console of the browser, you'll get an "undefined" error. The way to connect
> to a TCPSocket is the way you did it, using "socket = new
> client.core.TCPSocket();". Also, the "send" page from the doc
> (http://ape-project.org/static/jsdocs/client/symbols/APE.PipeProxy.html#static_send)
> doesn't actually says "send" anywhere, but use "write" instead, which
> doesn't exist. The same way, "proxy.connect" is used somewhere in the docs,
> but doesn't exist (proxy.open should be used).
>
> 7) The TCPSocket events should be listen to the way you did it and not the
> way the new documentation tell you to do it (By the way, the old doc said the
> same thing). Technically both should produce the same result, but using the
> documentation syntax, I got this error: Uncaught TypeError:
> Function.prototype.apply: Arguments list has wrong type
>
> 8) It should also be noted that APE Base64 encode the string sent from APE
> Client to APE Server, then APE Server decode it and sent it to the Socket
> Server. No big deal, but if you want to inspect the console, you'll see it.
>
> 9) Finally, depending on what you want to do with this socket connection, you
> could always use some server side coding to connect APE Server to the socket
> and push the data to the pipes manually. I'm not sure the impact this could
> have on performance, but…
>
>
>
> Again, I'll try to update the wiki about all of this Socket business soon so
> everyone can uses sockets \o/ !
>
>
>
>
> - Louis
>
>
> Le 2013-10-07 à 15:37, Pablo Zandoná <[email protected]> a écrit :
>
>> The connection is from APE to normal socket (Java).
>>
>> If the ape server dies, the connection on two sides should die, correct?
>>
>> So what is event called?
>>
>> This picture has been taked in moment exactly that I killed the aped.
>> Every request don't work more, and don't call any event.
>>
>>
>>
>> thanks!
>>
>>
>>
>> Em segunda-feira, 7 de outubro de 2013 15h54min57s UTC-3,
>> [email protected] escreveu:
>> Hai
>>
>>
>> The connection that this TCPSocket makes, is that to the Ape server?
>> I thought that this was meant to create on the client "another 'extra'
>> connection" to some server.
>> http://ape-project.org/wiki/index.php/index.php?page=JS+TCP+-+socket
>>
>> If the ape server dies, the client should fire a
>> http://ape-project.org/static/jsdocs/client/symbols/APE.html#static_event_apeDisconnect
>>
>> But it is probably that the 'other' connection stays intact.
>>
>>
>> Peter Reijnders
>>
>> Pablo Zandoná schreef op 2013-10-07 15:46:
>> > Thank you for atention!
>> >
>> > I try this event onclose, but too don't work.
>> >
>> > If you test this example,
>> > http://ape-project.org/wiki/index.php/index.php?page=JS+TCP+-+socket
>> > [8] , onclose too dont work. I dont know why.
>> >
>> > For test, I killed the aped process, and in the this exact time the
>> > requisition GET, an error signaled on browser terminal, so I have
>> > thought who should call to method onclose.
>> >
>> > Some idea?
>> >
>> > Thanks!
>> >
>> > Em sábado, 5 de outubro de 2013 14h40min56s UTC-3, Louis Charette
>> > escreveu:
>> >
>> >> Got lost for a minute here. TCPSOCKET is an alias to APE.PIPEPROXY.
>> >> That's why I couldn't find it in the doc at first.
>> >>
>> >> In that case, if I look at the client file PIPEPROXY.JS
>> >>
>> >
>> > (https://github.com/APE-Project/APE_JSF/blob/master/Source/Pipe/PipeProxy.js
>> >
>> >> [5]), it should be "ONCLOSE" and not "onDisconnect".
>> >>
>> >> See documentation for more details on PipeProxy here:
>> >>
>> >
>> > http://ape-project.org/static/jsdocs/client/symbols/APE.PipeProxy.html
>> >> [6] and the events here :
>> >> http://ape-project.org/static/jsdocs/client/symbols/APE.html [7]
>> >>
>> >> - Louis
>> >>
>> >> Le 2013-10-04 à 09:47, Pablo Zandoná <[email protected]> a
>> >> écrit :
>> >>
>> >>> Hello!
>> >>>
>> >>> I have a sockClient on my app, but when I kill the aped on my
>> >>> server, the event don't call onDisconnect function. Why?
>> >>>
>> >>> My socket:
>> >>>
>> >>>>>> var client = new APE.Client();
>> >>>>
>> >>>>>> var coreApe = null;
>> >>>> var T
>> >>>>
>> >>>>> argin:0 0 0 40px;border:none;padding:0px">
>> >>>> ocketCore = null;
>> >>> TCPSocket = this.core.TCPSocket;
>> >>> coreApe = this.core;
>> >>> coreApe.start();
>> >>> });
>> >>>
>> >>> client.addEvent('ready', function() {
>> >>> socketCore = new TCPSocket();
>> >>> socketCore.open(IP_CORE, PORTA_CORE);
>> >>>
>> >>> socketCore.onopen = function() {
>> >>>
>> >>> log_('Socket CORE conectado!');
>> >>>
>> >>> };
>> >>>
>> >>> socketCore.onread = function(data) {
>> >>> data = utf8_decode(data);
>> >>> json = stringToJson(data);
>> >>> InterfaceClientCore.callback(json);
>> >>> };
>> >>>
>> >>> socketCore.onDisconnect = function() {
>> >>>
>> >>> log_('socket.onDisconnect');
>> >>> }
>> >>>
>> >>> });
>> >>>
>> >>> Thanks!
>> >>>
>> >>> --
>> >>> --
>> >>> You received this message because you are subscribed to the
>> >>> Google
>> >>> Groups "APE Project" group.
>> >>> To post to this group, send email to [email protected]
>> >>> To unsubscribe from this group, send email to
>> >>> [email protected]
>> >>> For more options, visit this group at
>> >>> http://groups.google.com/group/ape-project?hl=en [1]
>> >>> ---
>> >>> APE Project (Ajax Push Engine)
>> >>> Official website : http://www.ape-project.org/ [2]
>> >>> Git Hub : http://github.com/APE-Project/ [3]
>> >>>
>> >>> ---
>> >>> You received this message because you are subscribed to the
>> >>> Google Groups "APE Project" group.
>> >>> To unsubscribe from this group and stop receiving emails from it,
>> >>> send an email to [email protected].
>> >>> For more options, visit https://groups.google.com/groups/opt_out
>> >>> [4].
>> >
>> > --
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "APE Project" group.
>> > To post to this group, send email to [email protected]
>> > To unsubscribe from this group, send email to
>> > [email protected]
>> > For more options, visit this group at
>> > http://groups.google.com/group/ape-project?hl=en [9]
>> > ---
>> > APE Project (Ajax Push Engine)
>> > Official website : http://www.ape-project.org/ [10]
>> > Git Hub : http://github.com/APE-Project/ [11]
>> >
>> > ---
>> > You received this message because you are subscribed to the Google
>> > Groups "APE Project" group.
>> > To unsubscribe from this group and stop receiving emails from it,
>> > send an email to [email protected].
>> > For more options, visit https://groups.google.com/groups/opt_out
>> > [12].
>> >
>> >
>> > Links:
>> > ------
>> > [1] http://groups.google.com/group/ape-project?hl=en
>> > [2] http://www.ape-project.org/
>> > [3] http://github.com/APE-Project/
>> > [4] https://groups.google.com/groups/opt_out
>> > [5]
>> >
>> > https://github.com/APE-Project/APE_JSF/blob/master/Source/Pipe/PipeProxy.js
>> >
>> > [6]
>> > http://ape-project.org/static/jsdocs/client/symbols/APE.PipeProxy.html
>> > [7] http://ape-project.org/static/jsdocs/client/symbols/APE.html
>> > [8]
>> > http://ape-project.org/wiki/index.php/index.php?page=JS+TCP+-+socket
>> > [9] http://groups.google.com/group/ape-project?hl=en
>> > [10] http://www.ape-project.org/
>> > [11] http://github.com/APE-Project/
>> > [12] https://groups.google.com/groups/opt_out
>>
>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "APE Project" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/ape-project?hl=en
>> ---
>> APE Project (Ajax Push Engine)
>> Official website : http://www.ape-project.org/
>> Git Hub : http://github.com/APE-Project/
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "APE Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>
--
--
You received this message because you are subscribed to the Google
Groups "APE Project" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/ape-project?hl=en
---
APE Project (Ajax Push Engine)
Official website : http://www.ape-project.org/
Git Hub : http://github.com/APE-Project/
---
You received this message because you are subscribed to the Google Groups "APE
Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.