2016-05-31 10 views
0

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?

+1

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. –

+0

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

+0

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

Antwort

2

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.

Verwandte Themen