Dies ist ein Ausschnitt aus der Todo-Liste Tutorial. Variable checked
wird sowohl auf der Client- als auch auf der Serverseite dargestellt? Wie kommunizieren der Client und der Server, um checked
konsistent zu machen?Meteor, Kommunikation zwischen dem Client und dem Server
Antwort
Meteor mag die Unschärfe der Linien zwischen Client und Server. Es gibt Dinge, die Sie tun können, um Code zu abstrahieren - zum Beispiel Javascript-Dateien (unter allen Dateien) innerhalb des Verzeichnisses , um den Zugriff darauf zu beschränken. Dies bedeutet, dass Clientbenutzer diesen Code nicht sehen können.
/client
ist offensichtlich das Gegenteil. Sie können eine Datei mit isClient
und isServer
überprüfen.
Nun, was bedeutet das für Ihren Code?
Je nachdem, wo sich Ihr Code befindet, gibt es verschiedene Zugriffsebenen. Innerhalb des Skripts gibt es jedoch grundsätzlich keinen Unterschied. checked
ist auf dem Server/Client in diesem Skript bekannt, weil Meteor läuft, die unscharfe Linie zwischen Client und Server macht dies möglich.
Meteor verwendet etwas namens "Datenbank überall", was bedeutet, dass es egal ist, wo der Code aufgerufen wird, weil er ausgeführt wird.
checked
ist ein Attrubit definiert auf einem Tasks
Objekt, wie in dieser App definiert.
In Meteor ist die definitive Aufzeichnung dieses Objekts auf dem Server gespeichert (in MongoDB
), jedoch gibt es einen clientseitigen Cache, der auch hier manipuliert wird, bekannt als MiniMongo
. Das Meteor-Framework arbeitet im Hintergrund (über das DDP
-Protokoll) sehr viel, um die Server- und Client-seitigen Objekte synchron zu halten.
In diesem Fall wird die folgende geschieht, wenn ein Benutzer auf eine Checkbox klickt in der Tasks.update
Methode (die 'click .toggle-checked'
Ereigniscode Brennen):
- Erstes Update Client-Seite MiniMongo Cache - dies ist bekannt als
Optimistic UI
und ermöglicht der Client-Benutzeroberfläche schnell zu reagieren (ohne auf den Server zu warten) - Senden Sie eine Nachricht an den Server (
Meteor Method
), dass der Client das ObjektTasks
aktualisieren möchte, indem Sie die Variableclicked
auf einen neuen Wert setzen. - Nachricht Update erhalten vom Server anfordern, die überprüft, dies eine gültige Betrieb ist, und entweder verarbeitet sie (die Aktualisierung
MongoDB
Version desTasks
Objekt, oder sich weigert, das Update entsprechend zu verarbeiten. - Server ein
DDP
Update senden wird des resultierenden Status desTasks
Objekt für alle Kunden, die auf eine Veröffentlichung abonniert haben, die es enthält. - Clients, die zuvor abonniert haben, werden diese
DDP
Update erhalten, und ihreMiniMongo
Version mit der Server-Version desTasks
Objekt ersetzen, Stellen Sie sicher, dass alle Clients mit dem Server synchronisiert sind
Jetzt im Idealfall, wenn der Server die Clients Änderungen akzeptiert, wird die neue Version von Tasks
erhalten (in Schritt 5) durch die initiierende Client das Objekt übereinstimmen es (in Schritt 1) optimistischer aktualisiert.
Durch die Implementierung aller dieser Schritte synchronisiert das Meteor-Framework jedoch auch andere Clients und behandelt den Fall, wenn der Server die Aktualisierung ablehnt oder möglicherweise zusätzliche Felder entsprechend der Anwendung ändert.
Glücklicherweise wird dies alles durch das Meteor-Framework gehandhabt, und alles, was Sie tun müssen, ist Tasks.update
anrufen für all diese Magie zu passieren!
- 1. Kommunikation zwischen Javascript und dem Server
- 2. Kommunikation zwischen Server- und Client-Verbindung C#
- 3. Client-Server-Socket basierte Kommunikation
- 4. MVVM: Kommunikation zwischen dem Model und ViewModels
- 5. Sichere Kommunikation zwischen einem C# -Client und einem PHP-Server
- 6. Client-Server-Kommunikation - Java-Server
- 7. einfache Client-Server-Kommunikation zwischen Java und PHP
- 8. Sichere Kommunikation zwischen Client und Service
- 9. MQTT Server zu Client-Kommunikation
- 10. TCP-Kommunikation zwischen Windows (Client) und Linux
- 11. asynchrone Kommunikation zwischen Server und Webbowser
- 12. Kommunikation zwischen Client-Seite und serverseitige Anwendung
- 13. Client/Server, verschlüsselte Kommunikation
- 14. Kommunikation zwischen dem EDT und den Haupt-Threads
- 15. Android-Kommunikation mit dem Server (php + postgree)
- 16. Client-Server TCP-Kommunikation
- 17. MQTT-Client-Server-Kommunikation
- 18. Bluetooth Client/Server-Kommunikation zwischen Computer und Handy
- 19. Benannte Pipe-Kommunikation zwischen C# -Server und C++ - Client
- 20. Kommunikation zwischen meinem Java Server und lokalem Client
- 21. Kommunikation zwischen zwei PHP-Anwendungen auf dem gleichen Server?
- 22. Middleware in Client/Server-Kommunikation
- 23. Server-Client-Kommunikation "Einfrieren" [Eingabeaufforderung]
- 24. Node-Sharing-Daten zwischen Server und Client
- 25. REST Server zu Client Kommunikation
- 26. Kommunikation zwischen 0MQ und NetMQ
- 27. Client-Server-Kommunikation mit PHP und Android
- 28. Android-Client und Java-Server TCP-Kommunikation
- 29. Bidirektionale WCF-Client-Server-Kommunikation
- 30. Client-Server-Kommunikation über Sockets