Ich entwickle eine Webanwendung, in der ich, sagen wir, eine Liste von Aufgaben zeigen muss.
Was ich tun muss, sobald ein Benutzer eine Aufgabe öffnet (dh in seinem Browser öffnet), wird es von allen anderen Benutzerlisten gelöscht oder es zeigt, dass die Aufgabe genommen wird, niemand kann eine Aufgabe öffnen, die bereits ist von jemand anderem geöffnet.
Darüber hinaus muss ich, sobald ein Benutzer eine Aufgabe schließen (zum Beispiel Benutzer seinen Browser schließt), es wieder in andere Benutzer Aufgabenliste hinzugefügt werden.
Wie kann ich das bitte tun? WebSocket auf der Client-Seite? Irgendwelche anderen - besseren - Wahlen?
Wie man das auf der Serverseite verwaltet?
DankeWie erstelle ich eine Echtzeit-Sicherheitssperre in einer Webanwendung?
Antwort
es zwei Lösungen (die ich kenne) für Ihr Problem:
- Ajax (und Lang Poll)
Ajax verwenden Sie den Server abfragen können alle X Sekunden für Daten, die notwendig sind, um das von Ihnen beschriebene Verhalten zu implementieren. Dies kann funktionieren, aber es ist kein empfohlener Weg. lesen Sie warum auf this thread.
- WebSocket
Genau wie eine Buchse Sie auf einer Desktop-Anwendung verwenden würde (daher der Name), können Sie eine WebSocket-Verbindung öffnen (keine HTTP-one), halten Sie es so lange nach Bedarf und schließen Sie es erst, wenn Sie damit fertig sind. Dies ist der bevorzugte Weg, um Daten ständig zwischen einem Client und einem Server fließen zu lassen. Es ist auch supported by almost every major browser out there
Es gibt andere Technologien wie WebRTC und Server-Sent Events, aber Ihre Beschreibung des Problems unter Berücksichtigung, der vielleicht nicht, was Sie suchen.
Off-Thema: Und ich bin mir nicht sicher, warum Ihre Frage wurde downvoted, sieht echt für mich aus.
- 1. Wie erstelle ich eine Webanwendung mit LISP?
- 2. Wie erstelle ich eine JNLP-Datei für eine Java-Webanwendung?
- 3. Wie erstelle ich eine Instanz einer Klasse?
- 4. Wie kann ich eine HTTPS-Anmeldeseite in einer Webanwendung implementieren?
- 5. Wie kann ich eine "System.Security.SecurityException" in einer Azure-Webanwendung beheben?
- 6. Wie erstelle ich eine Datenbank in Android?
- 7. Wie erstelle ich eine Hauptimportdatei in ES6?
- 8. Wie erstelle ich eine Sprachdatei für Text in Javascript-Dateien?
- 9. Wie durchlaufe/debugge ich eine Python-Webanwendung?
- 10. Wie erstelle ich eine PDF-Datei in einer UWP-App?
- 11. Wie erstelle ich eine Liste aus einer Textdatei in Python
- 12. Wie erstelle ich eine JSON-Antwort in einer PHP-Datei?
- 13. Wie erstelle ich eine Instanz einer anonymen Schnittstelle in Kotlin?
- 14. Wie erstelle ich eine String-Ersetzung in einer PowerShell-Funktion?
- 15. Wie erstelle ich eine neue HttpSession in einer RESTful Webapp?
- 16. Wie erstelle ich eine neue Instanz einer Struktur in F #?
- 17. Wie erstelle ich eine Karte in Java?
- 18. Wie erstelle ich eine Sequenz in MySQL?
- 19. Wie erstelle ich Zeilen in einer Ausgabedatei?
- 20. Wie erhalte ich eine Desktopbenachrichtigung von einer Webanwendung?
- 21. Wie erstelle ich eine MKMapView?
- 22. Wie erstelle ich eine Mehrfachfrage?
- 23. Wie erstelle ich eine Gemfile?
- 24. Wie erstelle ich eine Transaktionsnummer?
- 25. Wie erstelle ich eine Spring 3 + Tiles 2-Webanwendung mit REST-full-URLs?
- 26. Wie erstelle ich eine Basisseite in WPF?
- 27. Wie erstelle ich eine CGSize in Swift?
- 28. Wie erstelle ich eine Baumansicht in Android?
- 29. Wie erstelle ich eine Datei in Android?
- 30. Wie erstelle ich eine Stoppuhr in C#?
Was haben Sie bis zu diesem Zeitpunkt getan, um dieses Verhalten zu erreichen? Was ist der Technologie-Stack, den Sie verwenden? (z. B. JQuery am Frontend, Spring für Middleware, etc.). Sie können eine Ajax-Abfrage bei einem "Klick" der Aufgabe auslösen und den Server veranlassen, die Aufgabe aus dem "Aufgabenpool" zu entfernen und eine weitere Ajax-Abfrage auszulösen, wenn der Benutzer die Aufgabe "schließt". An diesem Punkt ist das alles, was ich Ihnen sagen kann. –
Ich habe nicht mit dem Programmieren begonnen, bis ich eine klare Vorstellung von der "Machbarkeit" habe. Ich habe überlegt, einen Websocket auf der Client-Seite zu öffnen, mit einer Weile (richtig), um die Aufgabe zu sperren, bin mir aber nicht sicher Ich habe noch nie solche Sachen gemacht (benutze websocket) habe nur ein paar Dokumente gelesen, aber ich denke mit zB 100.000 Websocket, die meinen Server in der gleichen Zeit verbinden. Das Überprüfen der Schlösser ist keine gute Idee. – hereForLearing
habe gerade deine Bearbeitung gesehen, du kannst sagen, dass ich Spring benutze (eigentlich benutze ich Grails, aber es ist dasselbe, Grails haben hier weniger Benutzer, deshalb ist es besser, eine Java-Frage zu stellen), habe ich gelesen ein Artikel über die Verwendung von Ajax, um dies zu tun, ist nicht zu empfehlen, da die Antworten vom Server in Unordnung – hereForLearing