Zoeken…


Invoering

Server Sent Events (SSE) is een unidirectionele verbinding tussen een server en een client (meestal een webbrowser) waarmee de server informatie naar de client kan "pushen". Het lijkt veel op websockets en lange polling. Het belangrijkste verschil tussen SSE en websockets is dat SSE unidirectioneel is, alleen de server kan informatie naar de client sturen, waar beide net als bij websockets informatie naar elkaar kunnen verzenden. SSE wordt doorgaans beschouwd als veel eenvoudiger te gebruiken / implementeren dan websockets.

Kolf 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

Dit voorbeeld gebruikt de asyncio SSE-bibliotheek: 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow