Appearance
Live-Ergebnisse
Bei Umfragen mit öffentlich sichtbaren Ergebnissen können sich die angezeigten Balken in Echtzeit aktualisieren: Stimmt jemand ab, sehen alle anderen, die gerade die Ergebnisse betrachten, die neuen Zahlen – ohne die Seite neu zu laden. Das eignet sich z. B. für Abstimmungen in Präsentationen, Livestreams oder auf Veranstaltungen.
Einschalten
Beim Script-Snippet mit data-live-results:
html
<div data-pollyou-survey="AbC123xyz0" data-live-results></div>
<script src="https://embed.pollyou.org/v1/embed.js" async></script>Beim Web Component mit dem Attribut live-results:
html
<pollyou-survey survey-id="AbC123xyz0" live-results></pollyou-survey>Der Direktlink hat Live-Ergebnisse immer eingeschaltet.
Wann aktualisiert wird
- Nur bei der Ergebnis-Sichtbarkeit „Immer“ (sowie „Nach Ende“, sobald die Umfrage beendet ist – dann kommen allerdings keine Stimmen mehr hinzu). Bei „Nach der Abstimmung“ und „Nie“ werden Ergebnisse nicht öffentlich verteilt; das Attribut hat dann keine Wirkung.
- Erst, wenn die Ergebnisse angezeigt werden (nach dem Abstimmen oder bei bereits beendeten Umfragen). Solange jemand die Frage beantwortet, besteht keine Verbindung.
- Höchstens einmal pro Sekunde je Umfrage; Stimmen innerhalb dieser Sekunde kommen gesammelt mit dem nächsten Update.
data-show-results="false"hat Vorrang: ohne angezeigte Ergebnisse gibt es auch keine Live-Updates.
Technik und Datenschutz
Die Updates kommen per Server-Sent Events von einem Mercure-Hub. Das Widget öffnet dazu eine Verbindung zu der Adresse, die die Umfrage im Feld realtime mitliefert ({hubUrl, topic}, Topic /surveys/{publicId}/results), und schließt sie, sobald das Widget von der Seite entfernt wird. Die Verbindung ist anonym, sendet keine Cookies und überträgt nur die aggregierten Ergebnisse, die ohnehin öffentlich sind. Reißt sie ab (Netzwechsel, Standby), baut der Browser sie selbst wieder auf; der Hub liefert in der Zwischenzeit verpasste Updates nicht nach, das Widget lädt die Ergebnisse deshalb nach jedem Wiederverbinden einmal neu. Browser ohne EventSource zeigen die Ergebnisse wie bisher ohne Aktualisierung.
Wird die Seite mit einer strengen Content-Security-Policy ausgeliefert, muss der Hub in connect-src erlaubt sein (z. B. connect-src https://rt.pollyou.org).
Dashboard
Das Dashboard nutzt einen eigenen, privaten Kanal je Umfrage (/organizations/{orgId}/surveys/{surveyId}) mit der Anzahl der Antworten. Der Zugang dazu erfordert einen kurzlebigen Token aus GET /api/surveys/{id}/realtime-token (Recht surveys.view):
json
{
"token": "eyJ…",
"hubUrl": "https://rt.pollyou.org/.well-known/mercure",
"topics": ["/organizations/…/surveys/…"],
"expiresIn": 300
}js
const url = new URL(hubUrl)
topics.forEach((topic) => url.searchParams.append('topic', topic))
url.searchParams.set('authorization', token)
const source = new EventSource(url)
source.onmessage = (event) => {
const { totalResponses, completedToday } = JSON.parse(event.data)
}Der Token gilt fünf Minuten; vor einem erneuten Verbindungsaufbau einen neuen abrufen. Der Hub speichert keine Updates (kein Nachholen per Last-Event-ID): Nach einem Verbindungsabbruch den aktuellen Stand über die API neu laden.