Suche…


Einführung

Server Sent Events (SSE) ist eine unidirektionale Verbindung zwischen einem Server und einem Client (normalerweise ein Webbrowser), über die der Server Informationen an den Client "pushen" kann. Es ist wie Websockets und lange Abfragen. Der Hauptunterschied zwischen SSE und Websockets besteht darin, dass SSE unidirektional ist. Nur der Server kann Informationen an den Client senden, wobei wie bei Websockets beide Informationen an einander senden können. SSE wird in der Regel als wesentlich einfacher zu verwenden / zu implementieren als Websockets.

Flasche SSE

@route("/stream")
def stream():
    def event_stream():
        while True:
            if message_to_send:
                yield "data: 
                    {}\n\n".format(message_to_send)"
    
    return Response(event_stream(), mimetype="text/event-stream")

Asyncio SSE

In diesem Beispiel wird die asyncio-SSE-Bibliothek verwendet: https://github.com/brutasse/asyncio-sse

import asyncio
import sse

class Handler(sse.Handler):
    @asyncio.coroutine
    def handle_request(self):
        yield from asyncio.sleep(2)
        self.send('foo')
        yield from asyncio.sleep(2)
        self.send('bar', event='wakeup')

start_server = sse.serve(Handler, 'localhost', 8888)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow