1
votes

I'm using Channel API (GAE Java SDK + GWT) and I'm trying to create a workaround for the problem regarding the re-creation of a channel (after the expiration date and also after an error is thrown). I found this post with possible solutions but none of them worked: https://groups.google.com/forum/?fromgroups=#!searchin/google-appengine-java/channel/google-appengine-java/kD3H6BWNYuA/NivXiDrqW7QJ

I tried removing the Channel API iframe and recreating the channel before the expiration time. It seams to work but if I recreate a channel the timer is not reset, so if i try to create a new channel and open it after the expiration period has passed, i get "onerror" and "onclose" (even though i closed the socket). If i refresh the page, it works, but that is not a good option

Also, if the internet connection closes and reopens, sometimes i get error code 0 or 1. The same here: i cannot recreate and open a new channel because i get "onerror" and "onclose".

Can anyone help me with more specific details for a solution ?

UPDATE: I used a timer to re-create the channel (5 seconds) after the onclose/onerror were called and it seams it works now. But after the first token expires, re-creating a channel will no longer work :(

2

2 Answers

1
votes

It seams that the reason for not being able to recreate a channel in GWT using the gwt-gae-channel-...jar is because the ChannelFacotry will instantiate only once an object of type Channel, thus, when trying to re-create and open another channel, you must set the initial object to null for example. The only way i could do that is to create another class, and copy/modify the code (I added a simple method to set "channel" to null).

0
votes

If you use the javascript API, you must call socket.close() before trying to create a new socket. socket.close() will remove the iframe etc.