Ich habe eine ManagedService mit onMessage FunktionAtmosphäre: Server erhält seine Nachricht
@ManagedService(path = "/atmosphere/formuserpresence/{id}")
public class FormUserPresenceUpdate extends AtmosphereHelper
{
@Message
public final void onMessage(final String message) throws IOException
{
...
...
...
...
broadcast(FormUserPresenceUpdate.class, "/atmosphere/formuserpresence/" + statusMessage.getId(), returnArrayString);
}
}
Und ich habe Client-Server-Kommunikation. Mehrere Clients können diesen Kanal mit ihren IDs abonnieren. Dann kann der Client einen Status senden, wie
message = { ident: "uniqid", Status: "statusMessageValue" });
Die Klasse FormUserPresenceUpdate speichert alle empfangenen Status aller Clients und sendet sie per Broadcast-Funktion als Array als Nachrichten zurück (returnArrayString).
Das Problem ist, dass, ob die Clients die richtigen Werte (das Array von Nachrichten) erhalten, der Server dieses Array auch von sich selbst erhält und fehlgeschlagen, es zu analysieren. Die Frage ist also: Was ist die Lösung für diese Situation? Kann ich es irgendwie so machen, dieses Nachrichtenfeld nicht vom Server selbst zu versenden? Oder sollte ich einen zweiten Kanal erstellen (das möchte ich wirklich nicht)?
Danke für die Arbeit zu beantworten. Ich habe mein spezielles Problem gelöst, indem ich die Broadcast-Funktion durch 'Return Message' ersetzt habe. Auf diese Weise erhalten alle Abonnenten die Nachricht, aber der Server nicht, was für mich in Ordnung war. Auch hier einen Hinweis gefunden [Link] (http://atmosphere-framework.2306103.n4.nabble.com/ManagedService-with-Post-tp4657184p4657185.html) wo es heißt, dass wenn der Decoder für die onMessage 'Methode kann Objekt nicht dekodieren, diese' onMessage' wird übersprungen. Ich denke, es lohnt sich, Ihren Beitrag für andere Nutzer hinzuzufügen. Wie auch immer, markiert die Frage als akzeptiert, danke. :-) – CodeMonkey