2011-01-07 11 views
9

Ich bin dabei, ein Live-Voting-System auf my website zu implementieren. Die Website bietet einen Livestream, und ich möchte die Zuschauer auffordern, während einer vom Caster initiierten Abstimmung eine Antwort auszuwählen. Ich kann verstehen, wie man die Daten in einer mySQL-Datenbank speichert und wie man die Antworten verarbeitet. Allerdings:Implementieren eines Live-Voting-System

Wie würde ich zunächst die Abstimmung auf der Client-Seite starten und anzeigen? Sollte ein Skript alle paar Sekunden auf der Seite ausgeführt werden, indem Sie auf einer anderen Seite nachsehen, ob eine Frage für den Benutzer verfügbar ist?

Gibt es Beispiele für ein Echtzeit-Polling-System wie das, was ich gerade implementiere?

Antwort

4

Sie müssten den Server alle paar Sekunden nach einer neuen Frage fragen.

Die Alternative besteht darin, die Verbindung offen zu halten, bis der Server mehr Daten sendet oder das Zeitlimit überschritten wird, was die Servertreffer reduziert (aber nicht eliminiert). Ich denke, es heißt "Long Polling". http://en.wikipedia.org/wiki/Push_technology

1

Sie könnten setTimeout in JavaScript verwenden, um AJAX-Anfragen alle paar Sekunden zu machen, um zu überprüfen, ob neue Fragen vorhanden sind.

Ja, lange polling könnte besser sein, aber ich bin mir sicher, es ist ein bisschen komplexer. Also, wenn Sie dem Job gewachsen sind, fahren Sie fort und benutzen Sie es!

Hier ist ein wenig mehr Informationen zum Thema: http://www.webdevelopmentbits.com/avoiding-long-polling

+0

Es ist nicht * Weise * komplexer, Sie senden nur die Antwort für eine Weile nicht. Siehe http://stackoverflow.com/questions/333664/simple-long-polling-example-code. –

+0

dann gut, ein bisschen komplexer. PS: Auf der Website, die ich gepostet habe, gibt es ein Codebeispiel für lange Umfragen. – JCOC611

1

Sie die Verbindung von der Client-Seite stammen müssen. Die einfachste Lösung ist, dass die Seite jede Sekunde eine AJAX-Anfrage macht. Webseiten müssen nicht sofort zurückkehren (sie können 30 Sekunden oder länger dauern, bevor sie reagieren, ohne dass die Verbindung unterbrochen wird). Das Öffnen einer Verbindung, die nicht antwortet, bis sie etwas zu sagen hat, ist "long-polling".