Recherche…


Introduction

SSE (Server Sent Events) est une connexion unidirectionnelle entre un serveur et un client (généralement un navigateur Web) qui permet au serveur de "transmettre" des informations au client. C'est un peu comme les websockets et les longues interrogations. La principale différence entre SSE et websockets est que SSE est unidirectionnel, seul le serveur peut envoyer des informations au client, comme avec les websockets, les deux peuvent envoyer des informations à chacun. SSE est généralement considéré comme beaucoup plus simple à utiliser / implémenter que les Websockets.

Flacon 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

Cet exemple utilise la bibliothèque asyncio SSE: 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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow