Server-sent events support for aiohttp.
Project description
The EventSource* interface is used to receive server-sent events. It connects to a server over HTTP and receives events in text/event-stream format without closing the connection. aiohttp-sse provides support for server-sent events for aiohttp.
Installation
Installation process as simple as:
$ pip install aiohttp-sse
Mailing List
aio-libs google group: https://groups.google.com/forum/#!forum/aio-libs
Example
import asyncio
from aiohttp import web
from aiohttp.web import Application, Response
from aiohttp_sse import sse_response
async def hello(request):
loop = request.app.loop
resp = await sse_response(request)
for i in range(0, 100):
print('foo')
await asyncio.sleep(1, loop=loop)
resp.send('foo {}'.format(i))
resp.stop_streaming()
return resp
async def index(request):
d = """
<html>
<head>
<script type="text/javascript"
src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
var evtSource = new EventSource("/hello");
evtSource.onmessage = function(e) {
$('#response').html(e.data);
}
</script>
</head>
<body>
<h1>Response from server:</h1>
<div id="response"></div>
</body>
</html>
"""
return Response(text=d, content_type='text/html')
app = web.Application()
app.router.add_route('GET', '/hello', hello)
app.router.add_route('GET', '/index', index)
web.run_app(app, host='127.0.0.1', port=8080)
Same example with asynchronous context manager interface (python3.5+)
import asyncio
from aiohttp import web
from aiohttp.web import Application, Response
from aiohttp_sse import sse_response
async def hello(request):
loop = request.app.loop
resp = await sse_response(request)
async with resp:
for i in range(0, 100):
print('foo')
await asyncio.sleep(1, loop=loop)
resp.send('foo {}'.format(i))
return resp
async def index(request):
d = """
<html>
<head>
<script type="text/javascript"
src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
var evtSource = new EventSource("/hello");
evtSource.onmessage = function(e) {
$('#response').html(e.data);
}
</script>
</head>
<body>
<h1>Response from server:</h1>
<div id="response"></div>
</body>
</html>
"""
return Response(text=d, content_type='text/html')
app = web.Application()
app.router.add_route('GET', '/hello', hello)
app.router.add_route('GET', '/index', index)
web.run_app(app, host='127.0.0.1', port=8080)
EventSource Protocol
Requirements
License
The aiohttp-sse is offered under Apache 2.0 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiohttp-sse-1.0.0.tar.gz
(8.4 kB
view hashes)
Built Distribution
Close
Hashes for aiohttp_sse-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87fbcef0493e992f0acb85c650bf82421340493a7fa6ac01dcf073e0ce875824 |
|
MD5 | 7c12fce173c531dc44e78a6ebed8d627 |
|
BLAKE2b-256 | 6fcc3d484055a00087ade90452b4ef24f1dd899686cbbe5103fe442142d42d97 |