2012-04-01 4 views
1

In der Google App Engine-Dokumentation für die Channel-API heißt es, dass nur jeweils ein Client mit einer bestimmten Client-ID eine Verbindung zu einem Channel herstellen kann.Beziehung zwischen Google App Engine-Channel-Token und Client-ID

Im Gegensatz, wenn ich versuche, einen Kanal mit der gleichen Client-ID zu erstellen, wird ein neuer Kanal verbraucht. Mit anderen Worten, wenn ich create channel api für ClientID "user_one" channelService.createChannel("user_one"); für zehn mal anrufe, würden 10 verschiedene Kanäle mit 10 verschiedenen Token-Strings erstellt, und wenn ich eine Nachricht an "user_one" channelService.sendMessage(new ChannelMessage("user_one", message)); sende, alle zehn Clients an verschiedene Geräte, würde die Nachricht erhalten!

Wie würden Sie dieses Szenario beschreiben? Wie kann man von diesem Mechanismus profitieren (eine Client-ID mit anderem Kanal, die alle die gleiche Nachricht erhalten)? Wie kann verhindert werden, dass mehrere Kanäle für einzelne Benutzer erstellt werden?

Antwort

2

Die Dokumentation ist nicht vollständig, aber sie beschreibt ihre Absicht ziemlich gut. Es heißt:

Nur ein Client zu einem Zeitpunkt kann eine Verbindung zu einem Kanal mit einer bestimmten Client-ID herstellen, so dass eine Anwendung keine Client-ID für Fan-out verwenden kann. Mit anderen Worten, es ist nicht möglich, eine zentrale Client-ID für Verbindungen mit mehreren Clients zu erstellen (Sie können beispielsweise keine Client-ID für einen Kanal mit der Bezeichnung "global-high-scores" erstellen und damit mehrere Spiele übertragen Clients.)

Es liegt an Ihnen, die Anzahl der Kanäle zu überwachen, die Sie für jede ClientID erstellen. Aus meiner Erfahrung funktioniert, was Sie beschreiben, aber nicht zuverlässig. Der neueste mit der ClientID erstellte Kanal funktioniert, die älteren funktionieren manchmal, empfangen manchmal keine Nachrichten.

Beachten Sie, dass, wenn Sie dies auf dem dev_appserver ausprobieren, alle Clients Nachrichten empfangen, aber auf dem realen Server ist dieses Verhalten nicht das gleiche.

Verwandte Themen