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.