Hi,

I have to agree with Pascal. Channel API has too many issues and though I 
have worked around most of them to a certain degree when it started to be 
good enough, I would not repeat this if I would be still planning my 
application. Some more issues that I can easily add to the list above:

- doesn't support batch sending (if you want to broadcast same message)
Note that the cost you see in the dashboard for Channel API is not the full 
cost. You also have to consider that your instances will spend some time 
sending the messages. Usually the API call to send a message takes 20-40 
millis, but on occasions it can take a couple of seconds. And if you are 
broadcasting your instances may end up spending most of the time doing 
sendMessage calls..
There is an issue for that, please star 
it: http://code.google.com/p/googleappengine/issues/detail?id=4506

- 400 SID errors
Usually it doesn't happen too often, but sometimes you will get them right 
after your client connected and then again...
There is an issue for that, feel free to star 
it: http://code.google.com/p/googleappengine/issues/detail?id=4940

- Sometimes channels are just dead
You create a channel, there are no errors or anything, but no matter how 
many messages you send, it just won't receive any. The token is still 
valid, so your client can try to reconnect, but it won't help, it has to 
create a new channel with a new token. But how to detect this kind of issue 
until it is too late and user has left your app for good? The problem is 
sometimes channel takes 20+ seconds before it receives messages..

- Quota of 60 connects per minute (1 per sec)
If I succeed, it won't be enough for my app. I have no idea how responsive 
is google in increasing the quota..

+1 for presence notifications are extremely unreliable
To a degree that I had to duplicate them, my app sends its own callbacks. 
What is unreliable you may ask? Disconnect notification for example may 
come *minutes* after. So my client already handled the situation and 
connected to another channel long ago. If I would have waited for presence 
notification, I would have lost the user. Or even worse on some days the 
notification may not come at all. 
And because you can never be totally sure that you have not missed 
something or channel doesn't give you a new trick, I had to add shamefull 
lazy polling to make sure my users are still connected :(

PS. I'm trying out Pusher and it looks good. 
PSS. I still like Appengine, but Channel API is really not ready for 
production apps.

суббота, 1 сентября 2012 г., 7:32:56 UTC+3 пользователь Kristopher Giesing 
написал:
>
>
>
> On Friday, August 31, 2012 12:29:20 PM UTC-7, Pascal Patry wrote:
>>
>> Hi, 
>>
>> Channels on AppEngine are picky. There are multiple issues that I had to 
>> work around for an application that is currently in production: 
>> 1. Channels aren't working on backends 
>>
>
> Argh, seriously? That is a huge problem for me :(
>  
>
>> 2. No API is available to mobile
>>
>
> I worked around this by embedding the jsapi code in my application.  It 
> seems to work fine... so far.
>  
>
>> 3. The implementation is different from the test and production server
>>
>
> Yes, that is a pain.  I had to add a wrapper class to my application to 
> choose between embedded test and prod implementations dynamically.
>  
>
>> 4. Connection/Disconnection handlers aren't reliably called 
>>
>
> Are you talking about this? If so it was fixed: 
> http://code.google.com/p/googleappengine/issues/detail?id=7098
>
> The fix isn't public yet but there's a patch in the thread.
>
> - Kris
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/YPNuW4F8A0kJ.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to